LAG et LEAD
Fonctions de fenêtrage qui lisent une valeur de la ligne précédente (LAG) ou suivante (LEAD), sans auto-jointure.
Syntaxe
LAG(column [, offset [, default]]) OVER ([PARTITION BY …] ORDER BY …)LEAD(column [, offset [, default]]) OVER ([PARTITION BY …] ORDER BY …)
- offset est le nombre de lignes en arrière ou en avant (1 par défaut). default remplace le NULL aux extrémités.
Exemple
SELECT order_id, order_date, LAG(order_date) OVER (ORDER BY order_id) AS prev_date FROM orders ORDER BY order_id;
Chaque commande avec la date de la commande précédente ; la première commande a NULL.
Tables utilisées : orders. Essayez-le dans une leçon ci-dessous.
Erreurs courantes
- Sans ORDER BY dans OVER, le résultat dépend de l'ordre des lignes et n'est pas fiable.
- Ajoutez PARTITION BY lorsque la comparaison doit rester dans un groupe, par exemple pour un même client.