LAG 和 LEAD
LAG
函数在同一结果集中的当前行之前提供行数据。例如,在 SELECT
语句中,你可以将当前行中的值与前一行中的值进行比较。
你使用标量表达式指定应比较的值。offset 参数是将在比较中使用的当前行之前的行数。如果未指定行数,则使用一行的默认值。
default 参数指定当 offset 处的表达式具有 NULL
值时应返回的值。如果未指定值,则返回 NULL
的值。
LEAD
函数提供行集中当前行之后的行数据。例如,在 SELECT
语句中,你可以将当前行中的值与下一行中的值进行比较。
你可以使用标量表达式指定应进行比较的值。offset 参数是将在比较中使用的当前行之后的行数。
你可以使用 default 参数指定当 offset 处的表达式具有 NULL
值时应返回的值。如果未指定这些参数,则使用默认的一行,并返回值 NULL
。
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;
此示例使用 LEAD 和 LAG 函数将每个员工的销售值与上面和下面列出的员工的销售值进行比较,并根据 BusinessEntityID 列排序记录。
BusinessEntityID |
SalesYTD | 领先价值 | 滞后值 |
---|---|---|---|
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 |