case具有两种格式。简单case函数和case搜索函数。
--简单case函数
case sex
when 'M' then '男'
when 'F' then '女’
else '其他'
end
--case搜索函数
case when sex = 'M' then '男'
when sex = 'F' then '女'
else '其他'
end
注意:case函数只返回第一个符合条件的值,剩下的case部分将会被自动忽略。
将sum与case结合使用,实现分段统计。举例,分段统计人员表中男女人数
如下表
代码如下
select
SUM(case when U.Sex='F' then 1 else 0 end) as 女,
SUM(case when U.Sex='M' then 1 else 0 end) as 男,
SUM(case when U.Sex IS NULL then 1 else 0 end) as 空
from [GSCenter01DB].[dbo].[account_Users] U
运行结果
还有一个用法,把判断的结果可以作为一个列值返回,如下表员工加班时数,判断超出部分进行标识
实现代码,如下:
select top 100 [EmpID],[JHourA],
(
case
when [JHourA]>120 then '簽核到中心級'
when [JHourA] between 80 and 120 then '簽核到處級'
when [JHourA]<80 then 'b不用解鎖'
end
) as [state]
from [GSeServiceDB ].[dbo].[GSOT_Emp]
运行效果,如下: