First_Value返回结果集中某列第一条数据的值,跟TOP 1效果一样,比较简单的一个函数
先贴测试用代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
DECLARE @TestData TABLE (
ID INT IDENTITY(1,1),
Department VARCHAR (20),
LastName VARCHAR (20),
Rate FLOAT
)
INSERT INTO @TestData(Department,LastName,Rate)
SELECT 'Document Control' , 'Arifin' ,17.7885 UNION ALL
SELECT 'Document Control' , 'Norred' ,16.8269 UNION ALL
SELECT 'Document Control' , 'Kharatishvili' ,16.8269 UNION ALL
SELECT 'Information Services' , 'Chai' ,10.25 UNION ALL
SELECT 'Information Services' , 'Berge' ,10.25 UNION ALL
SELECT 'Information Services' , 'Trenary' ,50.4808 UNION ALL
SELECT 'Information Services' , 'Conroy' ,39.6635 UNION ALL
SELECT 'Information Services' , 'Ajenstat' ,38.4615 UNION ALL
SELECT 'Information Services' , 'Wilson' ,38.4615 UNION ALL
SELECT 'Information Services' , 'Connelly' ,32.4519 UNION ALL
SELECT 'Information Services' , 'Meyyappan' ,32.4519
SELECT * FROM @TestData
|
下边使用FIRST_VALUE函数,创建一列新列,返回结果集中第一行的LastName值,这个所谓的第一行受OVER里的ORDER BY影响,看图和代码:
以ID正序取
以ID倒序取
如果SQL脚本中使用了PARTITION分区函数,则FIRST_VALUE返回每个分区内的首条数据值,看演示
这里以Department分区,则整个数据集被分成了两部分:Information Services和Document Control两块,这时FIRST_VALUE分别返回两块分区内的首条数据值,同样的受ORDER BY关键字的影响,
再看一个受ORDER BY 影响的例子
与FIRST_VALUE函数同时出现的还有一个,SECOND_VALUE?NO,没有这个函数啊,但是有一LAST_VALUE,怎么函数怎么使用,不打算再单独起一篇文章了,LAST_VALUE嗯