Casewhen 用法简介
上一篇博客使用了casewhen解决了数据汇总的问题,那么这一篇博客我将简单的介绍一下关于case when的使用。
CASEWHEN的表达形式
1、简单的case函数
--简单Case函数 CASE letterType WHEN '*介绍信' THEN '1' WHEN '转递档案通知单' THEN '2' ELSE '其他' END
2、case搜索函数
--Case搜索函数 CASE WHEN 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_userSalary GROUP 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(影子网络科技有限公司)