如何从 SQL Server 中的任何表中查找最后一个值
我们可以在 SQL Server 中使用 LAST_VALUE() 来查找任何表中的最后一个值。 SQL Server 中使用的LAST_VALUE()函数是一种窗口函数,它生成给定数据集的有序分区中的最后一个值。
句法 :
SELECT *,
FROM tablename
LAST_VALUE ( scalar_value )
OVER (
[PARTITION BY partition_expression ]
ORDER BY sort_expression [ASC | DESC]
)
AS columname ;
其中术语说明如下。
标量值 –
scalar_value 是针对给定数据集的有序分区中最后一行的值进行分析的值。
分区方式 –
PARTITION BY 子句是可选的,它将给定数据集的行区分为使用 LAST_VALUE()函数的分区。
订购者 –
ORDER BY 子句定义每个分区中使用 LAST_VALUE()函数的行的顺序。
示例-1:
假设我们有一个名为“geekdemo”的表;
SELECT Name, City, Year
FROM [geekdemo] ;
Name | City | Year |
---|---|---|
Ankit | Delhi | 2019 |
Babita | Noida | 2017 |
Chetan | Noida | 2018 |
Deepak | Delhi | 2018 |
Isha | Delhi | 2019 |
Khushi | Noida | 2019 |
Megha | Noida | 2017 |
Parul | Noida | 2017 |
示例 2 :
LAST_VALUE() 没有 PARTITION BY 子句:
SELECT TOP 1000 Name,
Year, LAST_VALUE(City)
OVER
(ORDER BY City ASC ) AS Last_City
FROM geekdemo;
输出 :
Name | Year | Last_City |
---|---|---|
Deepak | 2018 | Delhi |
Isha | 2019 | Delhi |
Ankit | 2019 | Delhi |
Babita | 2017 | Noida |
Chetan | 2018 | Noida |
Khushi | 2019 | Noida |
Megha | 2017 | Noida |
Parul | 2017 | Noida |
示例 3 :
LAST_VALUE() 与 PARTITION BY 子句:
SELECT Name,
Year,
LAST_VALUE(City) OVER
(PARTITION BY Year
ORDER BY City ASC) AS Last_City
FROM geekdemo;
输出 :
Name | Year | Last_City |
---|---|---|
Babita | 2017 | Noida |
Megha | 2017 | Noida |
Parul | 2017 | Noida |
Deepak | 2018 | Delhi |
Chetan | 2018 | Noida |
Isha | 2019 | Delhi |
Ankit | 2019 | Delhi |
Khushi | 2019 | Noida |