Young87

当前位置:首页 >个人收藏

case表达式


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表达式的时候,需注意以下几点:

  • 统一各分支返回的数据类型
  • 不要忘记写END
  • 养成写ELSE子句的习惯(ELSE子句是可选的,不写也不会出错,不写时,CASE表达式的执行结果是NULL)

行转列

SELECT pref_name,
     -- 男性人口
     SUM(CASE WHEN sex='1' THEN population ELSE 0 END) AS cnt_m,
     -- 女性人口
     SUM(CASE WHEN sex = '2' THEN population ELSE 0 END) AS cnt_f
FROM PopTbl2
GROUP BY pref_name;

除了SUM,COUNT、AVG等聚合函数也都可以用于将行结构的数据转换成列结构的数据


用CHECK约束定义多个列的条件关系


逻辑与和蕴含式


在UPDATE语句里进行条件分支

UPDATE Salaries
SET salary = CASE WHEN salary >= 300000
                  THEN salary * 0.9
                  WHEN salary >= 250000 AND salary < 280000
                  THEN salary * 1.2
                  ELSE salary END;

表之间的数据匹配

CASE表达式的一大优势在于能够判断表达式,也就是说,在CASE表达式里,我们可以使用BETWEEN、LIKE和<、>等便利的谓词组合,以及能够嵌套子查询的IN 和EXISTS谓词


在CASE表达式中使用聚合函数

SELECT std_id,
    CASE WHEN COUNT(*) = 1
        THEN MAX(club_id)
        ELSE MAX(CASE WHEN main_club_flg = 'Y'
                    THEN club_id
                    ELSE NULL END)
        END AS main_club
FROM StudentClub
GROUP BY std_id;

CASE表达式用在SELECT子句里时,既可以写在聚合函数内部,也可以写在聚合函数外部

除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog

上一篇: 其他职业越老越值钱,程序员越老越贬值?

下一篇: python抓取图片数字_[Python图像处理] 三十.图像量化及采样处理万字详细总结(推荐)...

精华推荐