SQL case when then 的用法
发布时间:2011-06-20 来源:文档文库
小
中
大
字号:
sql case when then else end
case具有两种格式。简单case函数和case搜索函数。
--简单case函数 case sex when'1'then'男' when'2'then'女' else'其他'end --case搜索函数
casewhen sex = '1'then'男' when sex = '2'then'女' else'其他'end
这两种方式,可以实现相同的功能。简单case函数的写法相对比较简洁,但是和case搜索函数相比,功能方面会有些限制,比如写判定式。 还有一个需要注重的问题,case函数只返回第一个符合条件的值,剩下的case部分将会被自动忽略。
--比如说,下面这段sql,你永远无法得到“第二类”这个结果 casewhen col_1 in ( 'a', 'b' then'第一类' when col_1 in ('a' then'第二类' else'其他'end
下面我们来看一下,使用case函数都能做些什么事情。
一,已知数据按照另外一种方式进行分组,分析。
有如下数据:(为了看得更清楚,我并没有使用国家代码,而是直接用国家名作为primary key
国家(country) 人口(population)
中国 美国 加拿大 英国 法国 日本 德国 墨西哥 印度
600 100 100 200 300 250 200 50 250
根据这个国家人口数据,统计亚洲和北美洲的人口数量。应该得到下面这个结果。
洲 亚洲 北美洲 其他
人口 1100 250 700
想要解决这个问题,你会怎么做?生成一个带有洲code的view,是一个解决方法,但是这样很难动态的改变统计的方式。 假如使用case函数,sql代码如下:
select sum(population, case country when'中国'then'亚洲' when'印度'then'亚洲' when'日本'then'亚洲' when'美国'then'北美洲' when'加拿大'then'北美洲' when'墨西哥'then'北美洲' else'其他'end fromtable_a groupbycase country when'中国'then'亚洲' when'印度'then'亚洲' when'日本'then'亚洲' when'