SQL LAG et LEAD


Exemple

La fonction LAG fournit des données sur les lignes avant la ligne en cours dans le même jeu de résultats. Par exemple, dans une SELECT , vous pouvez comparer les valeurs de la ligne actuelle avec les valeurs d'une ligne précédente.

Vous utilisez une expression scalaire pour spécifier les valeurs à comparer. Le paramètre offset est le nombre de lignes avant la ligne en cours qui sera utilisé dans la comparaison. Si vous ne spécifiez pas le nombre de lignes, la valeur par défaut d'une ligne est utilisée.

Le paramètre par défaut spécifie la valeur à renvoyer lorsque l'expression à l'offset a une valeur NULL . Si vous ne spécifiez pas de valeur, la valeur NULL est renvoyée.


La fonction LEAD fournit des données sur les lignes après la ligne en cours dans le jeu de lignes. Par exemple, dans une SELECT , vous pouvez comparer les valeurs de la ligne en cours avec les valeurs de la ligne suivante.

Vous spécifiez les valeurs à comparer en utilisant une expression scalaire. Le paramètre offset est le nombre de lignes après la ligne en cours à utiliser dans la comparaison.

Vous spécifiez la valeur à renvoyer lorsque l'expression à l'offset a une valeur NULL à l'aide du paramètre par défaut. Si vous ne spécifiez pas ces paramètres, la valeur par défaut d'une ligne est utilisée et la valeur NULL est renvoyée.

SELECT BusinessEntityID, SalesYTD,
       LEAD(SalesYTD, 1, 0) OVER(ORDER BY BusinessEntityID) AS "Lead value",
       LAG(SalesYTD, 1, 0) OVER(ORDER BY BusinessEntityID) AS "Lag value"
FROM SalesPerson;

Cet exemple utilise les fonctions LEAD et LAG pour comparer les valeurs de vente de chaque employé à ce jour avec celles des employés répertoriés ci-dessus et ci-dessous, les enregistrements étant classés en fonction de la colonne BusinessEntityID.

BusinessEntityID SalesYTD Valeur de plomb Valeur de retard
274 559697.5639 3763178.1787 0,0000
275 3763178.1787 4251368.5497 559697.5639
276 4251368.5497 3189418.3662 3763178.1787
277 3189418.3662 1453719.4653 4251368.5497
278 1453719.4653 2315185.6110 3189418.3662
279 2315185.6110 1352577.1325 1453719.4653