[MSSQL2012]First_Value函數

First_Value返回結果集中某列第一條數據的值,跟TOP 1效果同樣,比較簡單的一個函數app

先貼測試用代碼函數

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 @TestData3d

SNAGHTMLee28578

 

下邊使用FIRST_VALUE函數,建立一列新列,返回結果集中第一行的LastName值,這個所謂的第一行受OVER裏的ORDER BY影響,看圖和代碼:orm

以ID正序取blog

SNAGHTMLee4f242

 

以ID倒序取get

SNAGHTMLee5cf92

 

若是SQL腳本中使用了PARTITION分區函數,則FIRST_VALUE返回每一個分區內的首條數據值,看演示it

這裏以Department分區,則整個數據集被分紅了兩部分:Information Services和Document Control兩塊,這時FIRST_VALUE分別返回兩塊分區內的首條數據值,一樣的受ORDER BY關鍵字的影響,io

SNAGHTMLee90c10

 

再看一個受ORDER BY 影響的例子ast

SNAGHTMLee9b7c1

 

與FIRST_VALUE函數同時出現的還有一個,SECOND_VALUE?NO,沒有這個函數啊,可是有一LAST_VALUE,怎麼函數怎麼使用,不打算再單獨起一篇文章了,LAST_VALUE嗯

相關文章
相關標籤/搜索