LAG()
DSQL
LAG(<expr> [, <offset> [, <default>]]) OVER {<window_specification> | window_name}
Paramètre | Description |
---|---|
expr |
Expression : peut contenir une colonne de table, une constante, une variable, une expression, une fonction non agrégée ou une UDR. Les fonctions agrégées ne sont pas autorisées comme expression. |
offset |
Le nombre de lignes avant la ligne courante à partir desquelles la valeur doit être récupérée. Si aucune valeur n’est spécifiée, la valeur par défaut est 1. offset peut être une colonne, une requête imbriquée ou une autre expression qui calcule une valeur entière positive, ou un autre type qui peut être implicitement converti en `BIGINT'. offset ne peut pas être une valeur négative ou une fonction analytique. |
default |
Valeur par défaut qui est retournée si le décalage (offset) pointe en dehors de la section. La valeur par défaut est |
est le même que l’argument de la fonction expr.
La fonction LAG
permet d’accéder à une chaîne avec un décalage physique spécifié (offset) avant le début de la chaîne courante.
Si le décalage (offset) pointe en dehors de la section, la valeur default sera renvoyée, qui a pour valeur par défaut NULL.
Exemples:
LAG
Supposons que vous ayez une table "taux" qui stocke le taux de change pour chaque jour. Vous devez retracer les mouvements du taux au cours des cinq derniers jours.
SELECT
bydate,
cost,
cost - LAG(cost) OVER(ORDER BY bydate) AS change,
100 * (cost - LAG(cost) OVER(ORDER BY bydate)) /
LAG(cost) OVER(ORDER BY bydate) AS percent_change
FROM rate
WHERE bydate BETWEEN DATEADD(-4 DAY TO current_date)
AND current_date
ORDER BY bydate
bydate cost change percent_change ---------- ----- ------- -------------- 27.10.2014 31.00 <null> <null> 28.10.2014 31.53 0.53 1.7096 29.10.2014 31.40 -0.13 -0.4123 30.10.2014 31.67 0.27 0.8598 31.10.2014 32.00 0.33 1.0419