sql中case語(yǔ)句用法

sql中case語(yǔ)句用法

ID:11058515

大小:59.00 KB

頁(yè)數(shù):4頁(yè)

時(shí)間:2018-07-09

sql中case語(yǔ)句用法_第1頁(yè)
sql中case語(yǔ)句用法_第2頁(yè)
sql中case語(yǔ)句用法_第3頁(yè)
sql中case語(yǔ)句用法_第4頁(yè)
資源描述:

《sql中case語(yǔ)句用法》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。

1、SQL中Case語(yǔ)句用法討論?Case具有兩種格式。簡(jiǎn)單Case函數(shù)和Case搜索函數(shù)。--簡(jiǎn)單Case函數(shù)CASEsexWHEN'1'THEN'男'WHEN'2'THEN'女'ELSE'其他'END--Case搜索函數(shù)CASEWHENsex='1'THEN'男'WHENsex='2'THEN'女'ELSE'其他'END這兩種方式,可以實(shí)現(xiàn)相同的功能。簡(jiǎn)單Case函數(shù)的寫法相對(duì)比較簡(jiǎn)潔,但是和Case搜索函數(shù)相比,功能方面會(huì)有些限制,比如寫判斷式。還有一個(gè)需要注意的問題,Case函數(shù)只返回第一個(gè)符合條件的值,剩下的Case部分將

2、會(huì)被自動(dòng)忽略。--比如說(shuō),下面這段SQL,你永遠(yuǎn)無(wú)法得到“第二類”這個(gè)結(jié)果CASEWHENcol_1IN('a','b')THEN'第一類'WHENcol_1IN('a')THEN'第二類'ELSE'其他'END下面我們來(lái)看一下,使用Case函數(shù)都能做些什么事情。一,已知數(shù)據(jù)按照另外一種方式進(jìn)行分組,分析。有如下數(shù)據(jù):(為了看得更清楚,我并沒有使用國(guó)家代碼,而是直接用國(guó)家名作為PrimaryKey)國(guó)家(country)人口(population)中國(guó)600美國(guó)100加拿大100英國(guó)200法國(guó)300日本250德國(guó)200墨西哥50

3、印度250根據(jù)這個(gè)國(guó)家人口數(shù)據(jù),統(tǒng)計(jì)亞洲和北美洲的人口數(shù)量。應(yīng)該得到下面這個(gè)結(jié)果。洲人口亞洲1100北美洲250其他700想要解決這個(gè)問題,你會(huì)怎么做?生成一個(gè)帶有洲Code的View,是一個(gè)解決方法,但是這樣很難動(dòng)態(tài)的改變統(tǒng)計(jì)的方式。如果使用Case函數(shù),SQL代碼如下:SELECTSUM(population),CASEcountryWHEN'中國(guó)'THEN'亞洲'WHEN'印度'THEN'亞洲'WHEN'日本'THEN'亞洲'WHEN'美國(guó)'THEN'北美洲'WHEN'加拿大'THEN'北美洲'WHEN'墨西哥'THEN'

4、北美洲'ELSE'其他'ENDFROMTable_AGROUPBYCASEcountryWHEN'中國(guó)'THEN'亞洲'WHEN'印度'THEN'亞洲'WHEN'日本'THEN'亞洲'WHEN'美國(guó)'THEN'北美洲'WHEN'加拿大'THEN'北美洲'WHEN'墨西哥'THEN'北美洲'ELSE'其他'END;同樣的,我們也可以用這個(gè)方法來(lái)判斷工資的等級(jí),并統(tǒng)計(jì)每一等級(jí)的人數(shù)。SQL代碼如下;SELECTCASEWHENsalary<=500THEN'1'WHENsalary>500ANDsalary<=600THEN'2'W

5、HENsalary>600ANDsalary<=800THEN'3'WHENsalary>800ANDsalary<=1000THEN'4'ELSENULLENDsalary_class,COUNT(*)FROMTable_AGROUPBYCASEWHENsalary<=500THEN'1'WHENsalary>500ANDsalary<=600THEN'2'WHENsalary>600ANDsalary<=800THEN'3'WHENsalary>800ANDsalary<=1000THEN'4'ELSENULLEND;二,用

6、一個(gè)SQL語(yǔ)句完成不同條件的分組。有如下數(shù)據(jù)國(guó)家(country)性別(sex)人口(population)中國(guó)1340中國(guó)2260美國(guó)145美國(guó)255加拿大151加拿大249英國(guó)140英國(guó)260按照國(guó)家和性別進(jìn)行分組,得出結(jié)果如下國(guó)家男女中國(guó)340260美國(guó)4555加拿大5149英國(guó)4060普通情況下,用UNION也可以實(shí)現(xiàn)用一條語(yǔ)句進(jìn)行查詢。但是那樣增加消耗(兩個(gè)Select部分),而且SQL語(yǔ)句會(huì)比較長(zhǎng)。下面是一個(gè)是用Case函數(shù)來(lái)完成這個(gè)功能的例子SELECTcountry,SUM(CASEWHENsex='1'THEN

7、populationELSE0END),--男性人口SUM(CASEWHENsex='2'THENpopulationELSE0END)--女性人口FROMTable_AGROUPBYcountry;這樣我們使用Select,完成對(duì)二維表的輸出形式,充分顯示了Case函數(shù)的強(qiáng)大。三,在Check中使用Case函數(shù)。在Check中使用Case函數(shù)在很多情況下都是非常不錯(cuò)的解決方法??赡苡泻芏嗳烁揪筒挥肅heck,那么我建議你在看過下面的例子之后也嘗試一下在SQL中使用Check。下面我們來(lái)舉個(gè)例子公司A,這個(gè)公司有個(gè)規(guī)定,女職員

8、的工資必須高于1000塊。如果用Check和Case來(lái)表現(xiàn)的話,如下所示CONSTRAINTcheck_salaryCHECK(CASEWHENsex='2'THENCASEWHENsalary>1000THEN1ELSE0ENDELSE1END=1)如果單純使

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。