SQL Case When Then 条件判断
?
CASE??? WHEN 條件1 THEN 結(jié)果1
??? WHEN 條件2 THEN 結(jié)果2
??? WHEN 條件3 THEN 結(jié)果3
??? WHEN 條件4 THEN 結(jié)果4
.........
??? WHEN 條件N THEN 結(jié)果N
??? ELSE 結(jié)果X
END
Case具有兩種格式。簡(jiǎn)單Case函數(shù)和Case搜索函數(shù)。
--簡(jiǎn)單Case函數(shù)
CASE sex
???????? WHEN '1' THEN '男'
???????? WHEN '2' THEN '女'
ELSE '其他' END
--Case搜索函數(shù)
CASE WHEN sex = '1' THEN '男'
???????? WHEN sex = '2' THEN '女'
ELSE '其他' END
例如:
SELECT???? id, name, cj, (CASE WHEN cj < 60 THEN '不及格' WHEN cj BETWEEN 60 AND 90 THEN '良好' WHEN cj > 90 THEN '優(yōu)秀' END) AS 狀態(tài)
FROM?? stud
?
這兩種方式,可以實(shí)現(xiàn)相同的功能。簡(jiǎn)單Case函數(shù)的寫法相對(duì)比較簡(jiǎn)潔,但是和Case搜索函數(shù)相比,功能方面會(huì)有些限制,比如寫判斷式。
還有一個(gè)需要注意的問(wèn)題,Case函數(shù)只返回第一個(gè)符合條件的值,剩下的Case部分將會(huì)被自動(dòng)忽略。
--比如說(shuō),下面這段SQL,你永遠(yuǎn)無(wú)法得到“第二類”這個(gè)結(jié)果
CASE WHEN col_1 IN ( 'a', 'b') THEN '第一類'
???????? WHEN col_1 IN ('a')?????? THEN '第二類'
ELSE'其他' END
下面我們來(lái)看一下,使用Case函數(shù)都能做些什么事情。
一,已知數(shù)據(jù)按照另外一種方式進(jìn)行分組,分析。
有如下數(shù)據(jù):(為了看得更清楚,我并沒(méi)有使用國(guó)家代碼,而是直接用國(guó)家名作為Primary Key)
國(guó)家(country) 人口(population)
中國(guó) 600
美國(guó) 100
加拿大 100
英國(guó) 200
法國(guó) 300
日本 250
德國(guó) 200
墨西哥 50
印度 250
根據(jù)這個(gè)國(guó)家人口數(shù)據(jù),統(tǒng)計(jì)亞洲和北美洲的人口數(shù)量。應(yīng)該得到下面這個(gè)結(jié)果。
洲 人口
?
轉(zhuǎn)載于:https://www.cnblogs.com/ajax2008/archive/2011/01/13/1934610.html
總結(jié)
以上是生活随笔為你收集整理的SQL Case When Then 条件判断的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: *.tar.bz2文件解压
- 下一篇: Informix IDS 11体系打点(