SQL中的case when then else end用法详解数据库

一:简单用法:

  1.第一种写法:

SELECT 
    s.s_id, 
    s.s_name, 
    s.s_sex, 
    CASE 
WHEN s.s_sex = '1' THEN '' 
WHEN s.s_sex = '2' THEN '' 
ELSE '其他' 
END as sex, 
 s.s_age, 
 s.class_id 
FROM 
    t_b_student s 
WHERE 
    1 = 1

  2.第二种写法

SELECT 
    s.s_id, 
    s.s_name, 
    s.s_sex, 
    CASE s.s_sex 
WHEN '1' THEN '' 
WHEN '2' THEN '' 
ELSE '其他' 
END as sex, 
 s.s_age, 
 s.class_id 
FROM 
    t_b_student s 
WHERE 
    1 = 1

两个运行结果一样:

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

SQL中的case when then else end用法详解数据库

二:分组

表数据:

t_b_population 

SQL中的case when then else end用法详解数据库

sql语句:

SELECT country, 
    SUM(CASE WHEN p.sex = '1' THEN p.population ELSE 0 END) AS '', 
    SUM(CASE WHEN p.sex = '2' THEN p.population ELSE 0 END) AS '' 
FROM 
    t_b_population p 
GROUP BY country;

 运行结果:

SQL中的case when then else end用法详解数据库

表数据:

t_b_country 

SQL中的case when then else end用法详解数据库

sql语句:

SELECT 
    SUM(c.population) AS '人口', 
    CASE c.country 
        WHEN '中国'   THEN '亚洲' 
        WHEN '印度'   THEN '亚洲' 
        WHEN '日本'   THEN '亚洲' 
        WHEN '美国'   THEN '北美洲' 
        WHEN '加拿大' THEN '北美洲' 
        WHEN '墨西哥' THEN '北美洲' 
 ELSE '其他' END AS '' 
FROM 
    t_b_country c 
GROUP BY CASE c.country 
        WHEN '中国'   THEN '亚洲' 
        WHEN '印度'   THEN '亚洲' 
        WHEN '日本'   THEN '亚洲' 
        WHEN '美国'   THEN '北美洲' 
        WHEN '加拿大' THEN '北美洲' 
        WHEN '墨西哥' THEN '北美洲' 
 ELSE '其他' END;

运行结果:

SQL中的case when then else end用法详解数据库

 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/5771.html

(0)
上一篇 2021年7月17日
下一篇 2021年7月17日

相关推荐

发表回复

登录后才能评论