美文网首页
mysql中case when语法学习

mysql中case when语法学习

作者: 春天还没到 | 来源:发表于2017-08-03 09:23 被阅读0次

    有这样一个需求,数据存放在excel中,需要进行分类、累加、求和操作,最后需要根据自定义查询条件,展现到页面上,如果用人工进行分类计算,在数据量很大的情况下,工作量可想而知。
    excel中的格式如下:
    编号,项目编码,项目名称,类别代码,类别名称,子类别代码,子类别名称,有效数量,无效数量,...等,需要按一定的规则分类别统计,类别有五种,分别为01(管理)、02(服务)、03(农业)、04(工业)、05(3C),其中子类别中,A开头的归属于01, C开头的归属于02,B02、B04开头的归属于03,B03、B05的归属于04,B01的归属于05
    我的思路通过java解析excel把数据导入到mysql中,再利用sql进行统计,如下

    SELECT
        t.inst_code,
        t.inst_name,
        CASE
    WHEN LEFT (t.type_code, 1) = 'A' THEN
        '01'
    WHEN LEFT (t.type_code, 1) = 'C' THEN
        '02'
    WHEN LEFT (t.type_code, 3) = 'B02'
    OR LEFT (t.type_code, 3) = 'B04' THEN
        '03'
    WHEN LEFT (t.type_code, 3) = 'B03'
    OR LEFT (t.type_code, 3) = 'B05' THEN
        '04'
    ELSE
        '05'
    END , 
    SUM(t.effective_num)
    FROM
        tbl_temp_auth_num_statics t
    GROUP BY
        t.inst_code,
        t.inst_name,
        CASE
    WHEN LEFT (t.type_code, 1) = 'A' THEN
        '01'
    WHEN LEFT (t.type_code, 1) = 'C' THEN
        '02'
    WHEN LEFT (t.type_code, 3) = 'B02'
    OR LEFT (t.type_code, 3) = 'B04' THEN
        '03'
    WHEN LEFT (t.type_code, 3) = 'B03'
    OR LEFT (t.type_code, 3) = 'B05' THEN
        '04'
    ELSE
        '05'
    END 
    

    查询的结果如下:

    image.png

    相关文章

      网友评论

          本文标题:mysql中case when语法学习

          本文链接:https://www.haomeiwen.com/subject/fxvulxtx.html