理解:case (列名,非必填) when (条件判断) then (结果显示) else (不满足条件,需显示的结果) end。
case ....... end 可以看做 “()“
case后不加列名: when 条件可以对表内列进行判断
例如“学生表“内先根据“性别 列”判断,然后对“成绩 列”再进行判断。
case后加列名: when 条件只能对“列”内的“值”进行判断。
下面是简单的几个案例:
--case后面加字段名,那么when 后面写的就是字段内值的名字. 需要进行分组
--字段内某几个值 统计成一个 进行汇总
select sum(sal),case job when 'it' then '员工'
when '财务' then '员工'when '人事' then '员工'
else '领导'
end
from 表名
group by case job when 'it' then '员工'
when '财务' then '员工'
when '人事' then '员工'
else '领导'
end
-------------------------------------------------------------------------------------------------------
--把"字段值"根据"自定义区间"进行分组
when sal>2000 and sal<=3000 then '中等收入'
when sal> 3000 and sal<=6000 then '高等收入'
else '高层' end sal_1 ,count(*)
from 表名
group by case when sal>1000 and sal<=2000 then '低收入'
when sal>2000 and sal<=3000 then '中等收入'
when sal> 3000 and sal<=6000 then '高等收入'
else '自由收入' end
-------------------------------------------------------------------------------------------------------
--把字段sex内两个值 提取两个列.需要函数sum
select tname,sum(case when sex='男' then sal else '0' end),sum(case when sex = '女' then sal else '0' end) from 表名group by tname
具体使用 https://blog.csdn.net/a364416036/article/details/52510543