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 |