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