一、case when的使用方法
Case具有兩種格式。簡單Case函數(shù)和Case搜索函數(shù)。
第一種 格式 : 簡單Case函數(shù) :
格式說明
case 列名
when 條件值1 then 選項(xiàng)1
when 條件值2 then 選項(xiàng)2…
else 默認(rèn)值 end
eg:
select
case job_level
when ‘1’ then ‘1111’
when ‘2’ then ‘1111’
when ‘3’ then ‘1111’
else ‘eee’ end
from dbo.employee
第二種 格式 :Case搜索函數(shù)
格式說明
case
when 列名= 條件值1 then 選項(xiàng)1
when 列名=條件值2 then 選項(xiàng)2…
else 默認(rèn)值 end
eg:
update employee
set e_wage =
case
when job_level = ‘1’ then e_wage1.97
when job_level = ‘2’ then e_wage1.07
when job_level = ‘3’ then e_wage1.06
else e_wage1.05
end
提示:通常我們在寫Case When的語句的時(shí)候,會(huì)容易忘記 end 這個(gè)結(jié)束,一定要記得喲!
比較: 兩種格式,可以實(shí)現(xiàn)相同的功能。
簡單Case函數(shù)的寫法相對比較簡潔,但是和Case搜索函數(shù)相比,功能方面會(huì)有些限制,比如寫判斷式。還有一個(gè)需要注意的問題,Case函數(shù)只返回第一個(gè)符合條件的 值,剩下的Case部分將會(huì)被自動(dòng)忽略。
二、case when使用案例
1、已知數(shù)據(jù)按照另外一種方式進(jìn)行分組,分析
根據(jù)這個(gè)國家人口數(shù)據(jù),統(tǒng)計(jì)各個(gè)大洲的人口數(shù)量
用這個(gè)方法來判斷工資的等級(jí),并統(tǒng)計(jì)每一等級(jí)的人數(shù)
輸出每一個(gè)人的薪資等級(jí)
然后計(jì)算每一個(gè)等級(jí)的數(shù)量文章來源:http://www.zghlxwxcb.cn/news/detail-639997.html
方法1:
方法2:
2、豎表轉(zhuǎn)橫表
如下表所示,統(tǒng)計(jì)日本、泰國不同性別的人口,“sex”中1代表男性、2代表女性、3代表無性、4代表雙性, 要求以(國家、男性、女性、無性、雙性)為字段輸出表。
首先生成確定的字段(國家、男性、女性、無性、雙性),
然后以case when來判斷性別中人口的取值,并輸出表如下圖:
最后使用group by來通過國家分組,并取其中的最大值(有的人會(huì)使用sum求和,效果也是一樣的)
最終結(jié)果如下圖:
3、根據(jù)條件有選擇的update
P_key是表A_TEST1的主鍵,結(jié)果a和b的順序搞反了,這是需要把a(bǔ)和b倒換過來,一般情況下,要想把兩條數(shù)據(jù)的Primary key,a和b交換,需要經(jīng)過臨時(shí)存儲(chǔ),拷貝,讀回?cái)?shù)據(jù)的三個(gè)過程,要是使用Case函數(shù)的話,一切都變得簡單多了。
使用下列方式可將主鍵a、b替換過來
但這里有一個(gè)問題一定要注意,else 后面一定要將原有的值放進(jìn)來,否則除了a、b意外的值會(huì)被置成null,如下圖
轉(zhuǎn)載地址:https://www.cnblogs.com/ichenhao/p/8383866.html文章來源地址http://www.zghlxwxcb.cn/news/detail-639997.html
到了這里,關(guān)于SQL SERVER case when的使用方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!