📜  SQL Server LEAD()函数概述

📅  最后修改于: 2022-05-13 01:55:16.436000             🧑  作者: Mango

SQL Server LEAD()函数概述

在许多情况下,用户真的很想检查当前行的价值与后续行的价值。在 SQL Server 的 LEAD() 窗口函数中经常使用来解决这个问题。

带领() :
函数提供对位于该行之后的设置物理偏移处的行的访问。 LEAD()函数将允许访问下一行或下一行之后的行的数据,然后继续。

句法 :

LEAD(return_value, offset [, default])  
OVER (
   [PARTITION BY partition_expression]
   ORDER BY sort_expression [ASC | DESC]
)

在哪里 :

  1. 返回值——
    后续行的 return_value 支持指定的偏移量。 return_value 必须是一个值。
  2. 抵消 -
    偏移量是从当前行向前访问数据的行数。偏移量应该是一个正整数。如果不定义 offset 的默认值为 1。
  3. 默认 -
    如果偏移量超出分区范围,则 LEAD()函数会产生默认值。如果未定义,默认为 NULL。
  4. PARTITION BY 子句 –
    PARTITION BY 子句是可选的,它将结果集的行划分为使用 LEAD()函数的分区。
  5. ORDER BY 子句 –
    ORDER BY 子句定义使用 LEAD()函数的每个分区中行的逻辑顺序。

示例 1:
假设我们有下表名为“CompanySales”:

Select * 
from CompanySales;
CompanyYearAmount
ABC Ltd.20155000
XYZ Ltd.20154600
ABC Ltd.20175500
ABC Ltd.20165400
XYZ Ltd.20166500
ABC Ltd.20185400
XYZ Ltd.20174700
XYZ Ltd.20185400

示例 2:

SELECT TOP 10 [Company], [Year], [Amount],
LEAD(Amount, 1) OVER (
PARTITION BY Company
ORDER BY Year DESC
) AS Lead_amount
FROM [CompanySales] ;

输出 -

CompanyYearAmountLead_amount
ABC Ltd.201854005500
ABC Ltd.201755005400
ABC Ltd.201654005000
ABC Ltd.20155000NULL
XYZ Ltd.201854004700
XYZ Ltd.201747006500
XYZ Ltd.201665004600
XYZ Ltd.20154600NULL