av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

幾個SQL查詢小技巧,你學會幾個?

?1、行列轉(zhuǎn)換

問題:假設(shè)有張學生成績表(tb)如下:

成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),荔灣企業(yè)網(wǎng)站建設(shè),荔灣品牌網(wǎng)站建設(shè),網(wǎng)站定制,荔灣網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,荔灣網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

想變成(得到如下結(jié)果): 

代碼:

WITH tb(姓名,課程,分數(shù)) AS
(
SELECT N'張三',N'語文',74
UNION ALL
SELECT N'張三',N'數(shù)學',83
UNION ALL
SELECT N'張三',N'物理',93
UNION ALL
SELECT N'李四',N'語文',79
UNION ALL
SELECT N'李四',N'數(shù)學',86
UNION ALL
SELECT N'李四',N'物理',88
)

SELECT 姓名 ,
MAX(CASE 課程 WHEN '語文' THEN 分數(shù) ELSE 0 END) 語文,
MAX(CASE 課程 WHEN '數(shù)學' THEN 分數(shù) ELSE 0 END) 數(shù)學,
MAX(CASE 課程 WHEN '物理' THEN 分數(shù) ELSE 0 END) 物理
FROM tb GROUP BY 姓名

2、分頁

方案一:利用NOT IN和SELECT TOP分頁語句形式。

SELECT TOP 10 * FROM TestTable
WHERE ID NOT IN
(SELECT TOP 20 ID FROM TestTable ORDER BY ID)
ORDER BY ID

 方案二:利用ID大于多少和SELECT TOP分頁語句形式。

SELECT TOP 10 * FROM TestTable
WHERE ID > (
SELECT MAX(id) FROM
(SELECT TOP 20 id FROM
TestTable ORDER BY id) AS T)
ORDER BY ID

方案三:利用SQL Server中的特性ROW_NUMBER進行分頁 。

SELECT * FROM (
SELECT ROW_NUMBER() OVER(ORDER BY ID DESC) AS ROWID,*
FROM TestTable
) AS mytable where ROWID between 21 and 40

3、結(jié)果合并

合并重復行。

SELECT * FROM A
UNION
SELECT * FROM B

不合并重復行。

SELECT * FROM A
UNION ALL
SELECT * FROM B

4、隨機排序

SELECT * FROM TestTable ORDER BY NEWID()

還可以結(jié)合TOP取隨機的前N條記錄。

SELECT TOP 100 * FROM TestTable ORDER BY NEWID()

5、以任意符號分隔取兩邊數(shù)據(jù)

例如我們以逗號(,)來分割數(shù)據(jù),將如下數(shù)據(jù)。

分割成如下圖所示:

SELECT R,
CASE WHEN CHARINDEX(',',R)>1 THEN LEFT(R,CHARINDEX(',',R)-1) ELSE NULL END AS R1 ,
CASE WHEN CHARINDEX(',',R)>1 THEN RIGHT(R,(LEN(R) - CHARINDEX(',',R))) ELSE NULL END AS R2
FROM t

代碼較長,我們對代碼進行拆分來理解:

SELECT  CHARINDEX(',',',') --結(jié)果是1
SELECT CHARINDEX(',','NULL') --結(jié)果是0
SELECT CHARINDEX(',','') --結(jié)果是0
SELECT CHARINDEX(',','A,B') --結(jié)果是2
SELECT LEN('A,B') --結(jié)果是3
SELECT LEN('A,B') - CHARINDEX(',','A,B') --結(jié)果是3-2=1
SELECT RIGHT('A,B',( LEN('A,B') - CHARINDEX(',','A,B'))) --結(jié)果是 B

最后一步我們將'A,B'拆分出來了B,同理A我們也可以用類似的方法獲取到。

6、WAITFOR延時執(zhí)行

例 等待1 小時2 分零3 秒后才執(zhí)行SELECT 語句。

WAITFOR DELAY '01:02:03'
SELECT * FROM Employee

其中 DELAY是在延時多長時間后才開始執(zhí)行。

例 等到晚上11 點零8 分后才執(zhí)行SELECT 語句。

WAITFOR TIME '23:08:00'
SELECT * FROM Employee

其中TIME是等到具體某個時刻才開始執(zhí)行?。


網(wǎng)站標題:幾個SQL查詢小技巧,你學會幾個?
文章出自:http://uogjgqi.cn/article/cocjchj.html
掃二維碼與項目經(jīng)理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流