SQL LAST_VALUE

SQL LAST_VALUE 是一个分析函数,用于返回有序值集中的最后一个值。LAST_VALUE 的基本语法如下所示。

SELECT LAST VALUE([Scalar Expression]) 
                  OVER (
                         PARTITION_BY_Clause 
                         ORDER_BY_Clause
                        )
FROM [Source]

在此演示中,我们使用如下所示的数据。

SQL LAST_VALUE 无 Partition By 子句

如果在函数中省略了 Partition By 子句会怎样?

SELECT [FirstName]
      ,[LastName]
      ,[Education]
      ,[Occupation]
      ,[YearlyIncome]
      ,[Sales]
      ,[HireDate]
      ,LAST_VALUE([FirstName]) OVER (ORDER BY ([Sales])) AS Customer 
  FROM [Employee]

上面的 SQL Server 代码根据 Sales 列返回名字的最后一个值。

LAST_VALUE 2

下面的 SQL LAST_VALUE 代码行根据 Sales 数据按升序对表数据进行排序。让我向您展示。

SELECT [FirstName]
      ,[LastName]
      ,[Education]
      ,[Occupation]
      ,[YearlyIncome]
      ,[Sales]
      ,[HireDate]
FROM [Employee]
ORDER BY [Sales]
LAST_VALUE Without Partition By 3

下面的代码中的分析函数根据 Sales 返回独立的最后一个值。在上面的示例中,您可以看到 Christy 和 Rob 的销售额为 24.99。LastName 将从这两个名字中选择 Rob 并返回该名字。

LAST_VALUE([FirstName]) OVER (ORDER BY ([Sales])) AS Customer

所有剩余的值都是独立的,因此此函数会返回相同的值。

带 Partition By 的 LAST_VALUE 示例

此 LAST_VALUE 函数示例说明了如何从分区记录中选择最后一个值。首先,last_value 查询将按 Occupation 对数据进行分区,然后根据 Sales 选择每个分区中的最后一个 [名字] 值。

SELECT [FirstName]
      ,[LastName]
      ,[Education]
      ,[Occupation]
      ,[YearlyIncome]
      ,[Sales]
      ,[HireDate]
      ,LAST_VALUE([FirstName]) OVER (
                                      PARTITION BY [Occupation] 
				      ORDER BY [Sales]
				     ) AS BestCustomer   
FROM [Employee]
LAST_VALUE Partition and Order BY CLAUSE 4