各位用户为了找寻关于SqlServer2012中First_Value函数简单分析的资料费劲了很多周折。这里教程网为您整理了关于SqlServer2012中First_Value函数简单分析的相关资料,仅供查阅,以下为您介绍关于SqlServer2012中First_Value函数简单分析的详细内容
First_Value返回结果集中某列第一条数据的值,跟TOP 1效果一样,比较简单的一个函数
先贴测试用代码
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20DECLARE
@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嗯