sql中case语句的用法浅谈

2020-07-06 05:43:22易采站长站整理

SQL中Case的使用方法


Case具有两种格式。简单Case函数和Case搜索函数。

–简单Case函数


CASE sex


         WHEN ‘1’ THEN ‘男’


         WHEN ‘2’ THEN ‘女’


ELSE ‘其他’ END


–Case搜索函数


CASE WHEN sex = ‘1’ THEN ‘男’


         WHEN sex = ‘2’ THEN ‘女’


ELSE ‘其他’ END

这两种方式,可以实现相同的功能。简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式。


还有一个需要注意的问题,Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略。


–比如说,下面这段SQL,你永远无法得到“第二类”这个结果

CASE WHEN 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 ‘北美洲’

相关文章 大家在看