【專案實戰】---SQLServer中case when的簡單用法
阿新 • • 發佈:2019-02-16
前言:
對於SqlServer中case when 的應用在專案中進行了應用,現在做個簡單的總結。
case when 語句兩種語法:
1.簡單的case函式:
CASE sex
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他' END
2.case搜尋函式:
CASE
WHEN FID IS NULL THEN '未開始'
WHEN state > 0 THEN '進行中'
ELSE '已完成' END)state
FROM TABLE
所謂簡單Case函式其寫法相對比較簡潔,但是和Case搜尋函式相比,功能方面會有些限制,比如寫判斷式。另外,注意Case函式只返回第一個符合條件的值,剩下的Case部分將會被自動忽略。
case when在語句中位置:
1、select case when:
SELECT state.OrderNumber,
(CASE
WHEN FID IS NULL THEN '未開始'
WHEN state > 0 THEN'進行中'
ELSE '已完成'
END)state
FROM table
2、where case when:
SELECT type,name FROM t_table1 as l, t_table2 as u WHERE (CASE WHEN l.type = '班長' AND u.ID = '1' THEN 1 WHEN l.letterType = '班長' AND u.ID <> '1' THEN 1 ELSE 0 END) = 1
3、group by case when:
SELECT CASE WHEN age <= 10 THEN '1' WHEN age > 10 AND salary <=20 THEN '2' WHEN salary > 20 AND salary <=30 THEN '3' WHEN salary > 30 AND salary <= 40 THEN '4' ELSE NULL END 等級, -- 別名命名 COUNT(*) FROM t_age GROUP BY CASE WHEN age <= 10 THEN '1' WHEN age > 10 AND salary <=20 THEN '2' WHEN salary > 20 AND salary <=30 THEN '3' WHEN salary > 30 AND salary <= 40 THEN '4' ELSE NULL END;
總結:
對於case when的理解小編的認識還不夠深刻,通過簡單的例子的應用不斷的加深認識,希望能對大家所有幫助,有不足之處還望指出。