如何从 SQL Server 中的任何表中查找第一个值
我们可以在 SQL Server 中使用 FIRST_VALUE() 从任何表中查找第一个值。 SQL Server 中使用的FIRST_VALUE()函数是一种窗口函数,它产生给定数据集的有序分区中的第一个值。
句法 :
SELECT *,
FROM tablename;
FIRST_VALUE ( scalar_value )
OVER (
[PARTITION BY partition_value ]
ORDER BY sort_value [ASC | DESC]
) AS columname ;
语法说明:
- 标量值 –
scalar_value 是对提供的数据集的有序分区中第一行的值进行检查的值。 - 分区方式 –
PARTITION BY 是可选的,它将提供的数据集的行区分为使用 FIRST_VALUE()函数的分区。 - 订购者 –
ORDER BY 说明使用 FIRST_VALUE()函数的每个分区中的行顺序。
例子 :
假设我们有一个名为“geek_demo”的表:
SELECT TOP 1000 [Name]
,[City], [Year]
FROM [geek_demo];
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 |
示例-1:
查找没有 PARTITION BY 子句的 FIRST VALUE。
要查找表 'geek-demo' 的第一个城市,请使用以下查询:
SELECT [Name], [Year],
FIRST_VALUE(City) OVER (
ORDER BY City ASC
) AS First_City
FROM geek_demo;
输出 :
Name | Year | First_City |
---|---|---|
Babita | 2017 | Noida |
Chetan | 2018 | Noida |
Khushi | 2019 | Noida |
Megha | 2017 | Noida |
Parul | 2017 | Noida |
Deepak | 2018 | Delhi |
Isha | 2019 | Delhi |
Ankit | 2019 | Delhi |
示例 2 :
使用 PARTITION BY 子句查找 FIRST VALUE。
要根据表 'geek-demo' 的年份查找第一个城市,请使用以下查询:
SELECT TOP 1000 [Name] , [Year] ,
FIRST_VALUE(City) OVER (
PARTITION BY Year
ORDER BY City ASC
) AS First_City
FROM geek_demo;
输出 :
Name | Year | First_City |
---|---|---|
Babita | 2017 | Noida |
Megha | 2017 | Noida |
Parul | 2017 | Noida |
Deepak | 2018 | Delhi |
Chetan | 2018 | Delhi |
Isha | 2019 | Delhi |
Ankit | 2019 | Delhi |
Khushi | 2019 | Delhi |