zoukankan      html  css  js  c++  java
  • 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部分将会被自动忽略

    二:分组

    表数据:

    t_b_population 

    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;
     

     运行结果:

    表数据:

    t_b_country 

    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;
     

    运行结果:

  • 相关阅读:
    http请求
    mac chrome NET::ERR_CERT_INVALID
    百度小程序获取用户手机号
    js 异步总结
    百度小程序 es6 支持情况
    每日日报
    每日日报
    每日日报
    05程序员修炼之道:从小工到专家阅读笔记之二
    05程序员修炼之道:从小工到专家阅读笔记之一
  • 原文地址:https://www.cnblogs.com/edda/p/13921666.html
Copyright © 2011-2022 走看看