標籤:case when sqlserver group by case when where case when select case when
Casewhen 用法簡介
上一篇部落格使用了casewhen解決了資料匯總的問題,那麼這一篇部落格我將簡單的介紹一下關於case when的使用。
CASEWHEN的表達形式
1、簡單的case函數
--簡單Case函數CASE letterType WHEN '幹部介紹信' THEN '1' WHEN '轉遞檔案通知單' THEN '2' ELSE '其他' END
2、case搜尋函數
--Case搜尋函數CASEWHEN letterType='幹部介紹信' THEN '1' WHEN letterType='轉遞檔案通知單' THEN '2' ELSE '其他' END
簡單Case函數的寫法相對比較簡潔,但是和Case搜尋函數相比,功能方面會有些限制,比如寫判斷式。還有一個需要注意的問題,Case函數只返回第一個合格值,剩下的Case部分將會被自動忽略。
CASEWHEN 在語句中不同位置的用法
1、 SELECT CASE WHEN用法
select userID ,count(CASE WHEN letterType='幹部介紹信' then '1' end)幹部介紹信數,count(CASE WHEN letterType='轉遞檔案通知單' then '1' end)轉遞檔案通知單數from T_LettersRecord GROUP BY userID
運行結果:
2、 WHERE CASE WHEN 用法
SELECT l.letterType, u.realName FROM T_LettersRecord as l, T_User as u WHERE (CASE WHEN l.letterType = '幹部介紹信' AND u.userID = '1' THEN1 WHENl.letterType = '幹部介紹信' AND u.userID <> '1' THEN1 ELSE0 END) = 1
運行結果:
3、 GROUP BY CASE WHEN 用法
SELECT CASE WHEN salary <= 3000 THEN 'T1' WHEN salary > 3000 AND salary <=8000 THEN'T2' WHEN salary > 8000 AND salary <=12000 THEN'T3' WHEN salary > 12000 AND salary <= 20000 THEN 'T4' ELSE NULL END 層級名稱, -- 別名命名COUNT(*) FROM t_userSalaryGROUP BY CASE WHEN salary <= 3000 THEN 'T1' WHEN salary > 3000 AND salary <=8000 THEN'T2' WHEN salary > 8000 AND salary <=12000 THEN'T3' WHEN salary > 12000 AND salary <= 20000 THEN 'T4' ELSE NULL END;
運行結果:
本文簡單的介紹了一下CASEWHEN的簡單使用方法,希望能夠對讀者能夠有所協助。
參考文章:
http://www.cnblogs.com/eshizhan/archive/2012/04/06/2435493.html(eshizhan)
http://www.cnblogs.com/yazdao/archive/2009/12/09/1620482.html(影子網路科技有限公司)
SQL Server---Case When用法簡介