SqlServer2012中LEAD函數簡略剖析。本站提示廣大學習愛好者:(SqlServer2012中LEAD函數簡略剖析)文章只能為提供參考,不一定能成為您想要的結果。以下是SqlServer2012中LEAD函數簡略剖析正文
LEAD函數簡略點說,就是把下一行的某列數據提取到以後行來顯示,看示例更能說明清晰,先看測試用劇本
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函數,看下怎樣把其它行的數據提取到以後行顯示的
可以看到,LEAD函數把ID為2的那一行的LastName值提取到第一行顯示為新列NEXTUser,就這麼個功效
下邊這個是距離兩行提取數據,就是把第三行的數據提取到以後行,其它行以次累推,看圖
這個函數一共接收三個參數,第一個是表達式,以上示例都應用的字段,還可所以其它有用的表達式,第二個參數是offset,即距離若干行取數據,第三個是默許的距離,即當沒有指定offset時以此為准
舉個例子,以上述代碼為例
LEAD(LastName,2,0)
當沒有指定誰人2的時刻,則以距離0行動准,當有指定誰人2的時刻則距離2行取數據,所以,常常第三個參數可以不指定,後果是一樣的,以下圖
與LEAD函數絕對應的還有一個函數,LAG,看下圖後果
如上圖所示,這個函數是從下行取數據,其它距離參數的意義一樣,LEAD是從下行取數據,TAG相反是下行取數據,寫到這裡我就再想,假如指定正數,是否是便可以歸並為一個函數了?試下設法主意:
報錯,offset參數不克不及為負,哥不作評論,,,The End