美文网首页
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