【專案實戰】---SQLServer中case when的簡單用法

一路向前!發表於2017-12-03

前言:

對於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的理解小編的認識還不夠深刻,通過簡單的例子的應用不斷的加深認識,希望能對大家所有幫助,有不足之處還望指出。

相關文章