(一)简单用法:
1.第一种写法:
SELECT id,name,case when type = 1 then '通用文件' when type = 2 then
'专案文件' else '未知文件' end '文件类型' FROM bas_role_info
2.第二种写法:
SELECT id,name,case type when 1 then '通用文件' when 2 then '专案文件'
else '未知文件' end '文件类型' FROM bas_role_info
两个运行结果一样:
需要注意的问题,Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略
--比如说,下面这段SQL,你永远无法得到“第二类”这个结果
CASE WHEN col_1 IN ('a','b') THEN '第一类'
WHEN col_1 IN ('a') THEN '第二类'
ELSE'其他' END
(二)分组:
数据库population表:
SELECT country, SUM(CASE
WHEN type = 1 THEN
population
ELSE
0
END
) as 东部人口,SUM(CASE
WHEN type = 2 THEN
population
ELSE
0
END
) as 西部人口,SUM(CASE
WHEN type = 3 THEN
population
ELSE
0
END
) as 其他人口 FROM population GROUP BY country
结果:
数据库population表:
SELECT
SUM(population) as '人口',
case when country = '中国' then '亚洲'
when country = '俄罗斯' then '亚洲'
when country = '英国' then '欧洲'
else '其他洲' end as '洲'
FROM population GROUP BY case when country = '中国' then '亚洲'
when country = '俄罗斯' then '亚洲'
when country = '英国' then '欧洲'
else '其他洲' end
结果: