CASE WHEN THEN END多条件判断

CASE WHEN THEN END结构有两种书写方式
结构:

CASE 
            WHEN 条件1 THEN 结果1
            WHEN 条件2 THEN 结果2
            WHEN 条件3 THEN 结果3
            .........
            WHEN 条件N THEN 结果N
        END
    方式:
    第一种格式简单的CASE 函数
CASE SEX 
                WHEN '1' THEN '男'
                WHEN '0'  THEN '女'
                ELSE '其他' END

第二种格式为CASE搜索函数

CASE 
            WHEN SEX ='1'  THEN '男'
            WHEN SEX ='0'  THEN '女'
            ELSE '其他' END
    ```

    注意:
    ------------
    这两种方式,可以实现相同的功能。简单CASE函数的书写方法相对比较简介,但是和CASE搜索函数相比,功能方面会有些限制,CASE函数只返回一个符合条件的值,剩下的CASE部分将会被忽略。


CASE的作用还可以做哪些事情
---------------
有如下数据
国家(county) 人口(population)
中国              600
美国               100
加拿大            100
英国                200
法国                 300
日本                 250
德国                 200
墨西哥              50
印度                  250

根据这个国家人口数据,统计亚洲和北美洲的人口数量
亚洲   1100
北美洲  250
其他      700


现在看看CASE WHEN THEN是如何操作的

SELECT 
SUM(POPULATION),
CASE COUNTRY
WHEN 中国  THEN ‘亚洲’
WHEN 美国 THEN ‘北美洲 ’
WHEN 加拿大 THEN ‘北美洲 ’
WHEN 日本 THEN ‘亚洲’
WHEN 墨西哥 THEN ‘北美洲 ’
WHEN 印度 THEN ‘亚洲’
ELSE ‘其他’ END

 FROM TABLE_A GROUP BY CASE COUNTRY
WHEN 中国  THEN ‘亚洲’
WHEN 美国 THEN ‘北美洲 ’
WHEN 加拿大 THEN ‘北美洲 ’
WHEN 日本 THEN ‘亚洲’
WHEN 墨西哥 THEN ‘北美洲 ’
WHEN 印度 THEN ‘亚洲’
ELSE ‘其他’ END



在CHECK中使用CASE
-------------


在CHECK中使用CASE函数在很多情况下都是非常不错的解决方法.可能有很多人根本就不用CHECK,那么我建议你在看过下面的列子之后尝试一下SQL中使用CHECK.

如下所示:

CONSTRAINT CHECK_SALARY CHECK
WHEN SEX = ‘0’ THEN CASE WHEN SALARY > 1000 THEN 1
ELSE 0 END ELSE 1 END = 1)
“`

猜你喜欢

转载自blog.csdn.net/Writing_the_future/article/details/82735062