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 列返回名字的最后一个值。

下面的 SQL LAST_VALUE 代码行根据 Sales 数据按升序对表数据进行排序。让我向您展示。
SELECT [FirstName]
,[LastName]
,[Education]
,[Occupation]
,[YearlyIncome]
,[Sales]
,[HireDate]
FROM [Employee]
ORDER BY [Sales]

下面的代码中的分析函数根据 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]
