SQLServer高級(jí)函數(shù)的用法有哪些

本篇文章為大家展示了SQL Server高級(jí)函數(shù)的用法有哪些,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

創(chuàng)新互聯(lián)建站自2013年創(chuàng)立以來,公司以成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、系統(tǒng)開發(fā)、網(wǎng)絡(luò)推廣、文化傳媒、企業(yè)宣傳、平面廣告設(shè)計(jì)等為主要業(yè)務(wù),適用行業(yè)近百種。服務(wù)企業(yè)客戶1000多家,涉及國(guó)內(nèi)多個(gè)省份客戶。擁有多年網(wǎng)站建設(shè)開發(fā)經(jīng)驗(yàn)。為企業(yè)提供專業(yè)的網(wǎng)站建設(shè)、創(chuàng)意設(shè)計(jì)、宣傳推廣等服務(wù)。 通過專業(yè)的設(shè)計(jì)、獨(dú)特的風(fēng)格,為不同客戶提供各種風(fēng)格的特色服務(wù)。

SQL Server從2012版本開始,引入了LEAD和LAG函數(shù),這兩個(gè)函數(shù)可以把之前要關(guān)聯(lián)查詢的方法,改為可直接獲取當(dāng)前數(shù)據(jù)上下相鄰多少行數(shù)據(jù),可以很方便的對(duì)上下相鄰兩行的數(shù)據(jù)進(jìn)行加減乘除。今天我們就給大家介紹一下這兩個(gè)函數(shù)的用法。

LAG函數(shù)

LAG的作用

LAG 以當(dāng)前行之前的給定物理偏移量來提供對(duì)行的訪問。 在 SELECT 語句中使用此分析函數(shù)可將當(dāng)前行中的值與先前行中的值進(jìn)行比較。

LAG的語法

LAG (scalar_expression [,offset] [,default])      OVER ( [ partition_by_clause ] order_by_clause )

參數(shù)解釋

scalar_expression

要根據(jù)指定偏移量返回的值。 這是一個(gè)返回單個(gè)(標(biāo)量)值的任何類型的表達(dá)式。scalar_expression 不能為分析函數(shù)。

offset

當(dāng)前行(從中獲得取值)后的行數(shù)。 如果未指定,則默認(rèn)值為 1。

OVER

為開窗函數(shù),LAG函數(shù)必須與開窗函數(shù)一起使用。

LAG示例

WITH T AS  (  SELECT 1 ID,10 NUM  UNION ALL  SELECT 1,20  UNION ALL  SELECT 1,30  UNION ALL  SELECT 2,40  UNION ALL  SELECT 2,50  UNION ALL  SELECT 2,60  )  SELECT ID,NUM,  LAG(NUM) OVER (PARTITION BY ID ORDER BY NUM) AS OneArgs,  LAG(NUM,1) OVER (PARTITION BY ID ORDER BY NUM) AS TowArgs,  LAG(NUM,2,0) OVER (PARTITION BY ID ORDER BY NUM) AS ThressArgs  FROM T

(提示:可以左右移動(dòng)代碼)

結(jié)果如下:

SQL Server高級(jí)函數(shù)的用法有哪些

從上面的示例中我們可以看到

1、針對(duì)列OneArgs,組內(nèi)的NUM列的值默認(rèn)向后偏移了一行,每組的第一行用默認(rèn)的NULL來代替

2、針對(duì)TowArgs,使用了2個(gè)參數(shù)顯示的偏移行,NUM的值也是向后偏移一行。

3、針對(duì)ThreeArgs,不僅使用了顯示的偏移2行,而且第三個(gè)參數(shù)將偏移后默認(rèn)值NULL改成了0

實(shí)戰(zhàn)例子:如何求解組內(nèi)上下兩行的和?

SELECT ID,NUM,  NUM+LAG(NUM,1,0) OVER (PARTITION BY ID ORDER BY NUM) AS Result  FROM T

結(jié)果如下:

SQL Server高級(jí)函數(shù)的用法有哪些

注意:第一行因?yàn)槟J(rèn)是0,所以每組第一行的結(jié)果是NUM+0=NUM

LEAD函數(shù)

LEAD函數(shù)與LAG函數(shù)剛剛相反,它是向前偏移指定的行數(shù),默認(rèn)是1行。

語法哈參數(shù)與LAG類似,這里就不重復(fù)介紹了。我們直接看示例:

SELECT ID,NUM,  LEAD(NUM) OVER (PARTITION BY ID ORDER BY NUM) AS OneArgs,  LEAD(NUM,1) OVER (PARTITION BY ID ORDER BY NUM) AS TowArgs,  LEAD(NUM,2,0) OVER (PARTITION BY ID ORDER BY NUM) AS ThressArgs  FROM T

結(jié)果:

SQL Server高級(jí)函數(shù)的用法有哪些

使用情況與LAG函數(shù)類似,只是組內(nèi)數(shù)據(jù)分別向前偏移了指定行數(shù)。

實(shí)戰(zhàn)示例:求解同組內(nèi)上下兩行的差?

SELECT ID,NUM,  LEAD(NUM,1,0) OVER (PARTITION BY ID ORDER BY NUM)-NUM AS Result  FROM T

結(jié)果:

SQL Server高級(jí)函數(shù)的用法有哪些

每組最后一行默認(rèn)是0,所以0-NUM=-NUM

上述內(nèi)容就是SQL Server高級(jí)函數(shù)的用法有哪些,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

標(biāo)題名稱:SQLServer高級(jí)函數(shù)的用法有哪些
當(dāng)前網(wǎng)址:http://muchs.cn/article42/gheiec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、定制開發(fā)面包屑導(dǎo)航、域名注冊(cè)、動(dòng)態(tài)網(wǎng)站網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作