LEAD函數簡單點說,就是把下一行的某列數據提取到當前行來顯示,看示例更能解釋清楚,先看測試用腳本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 @TestData測試
以上是原始數據,下邊應用LEAD函數,看下怎麼把其它行的數據提取到當前行顯示的orm
能夠看到,LEAD函數把ID爲2的那一行的LastName值提取到第一行顯示爲新列NEXTUser,就這麼個功能blog
下邊這個是間隔兩行提取數據,就是把第三行的數據提取到當前行,其它行以次累推,看圖get
這個函數一共接受三個參數,第一個是表達式,以上示例都使用的字段,還能夠是其它有效的表達式,第二個參數是offset,即間隔多少行取數據,第三個是默認的間隔,即當沒有指定offset時以此爲準it
舉個例子,以上述代碼爲例io
LEAD(LastName,2,0)ast
當沒有指定那個2的時候,則以間隔0行爲準,當有指定那個2的時候則間隔2行取數據,因此,每每第三個參數能夠不指定,效果是同樣的,以下圖form
與LEAD函數相對應的還有一個函數,LAG,看下圖效果
如上圖所示,這個函數是從上行取數據,其它間隔參數的意義同樣,LEAD是從下行取數據,TAG相反是上行取數據,寫到這裏我就再想,若是指定負數,是否是就能夠合併爲一個函數了?試下想法:
報錯,offset參數不能爲負,哥不做評論,,,The End