case...when...then...else...end,是在from前面,可以改变记录中某字段的值,不能决定是否显示该记录;
where,是在from后面,不可以改变记录中某字段的值,但可以决定是否显示该记录。
case...when...then...else...end,可用于对同一记录的多个字段求和,带分支判断。
另外,对字段判断和处理,往往需要强制类型转换。<select id="findByPage" resultType="com.huarui.mapping.entity.PmpersoninputEntity" parameterType="com.huarui.common.entity.web.Req">SELECT a.project_id,a.user_id,b.project_name,c.user_name,d.input_id,d.input_ym,sum(d.input_status) as total,SUM(CASE WHEN d.INPUT_DAY = '01' THEN d.input_status ELSE NULL END) AS day01,SUM(CASE WHEN d.INPUT_DAY = '02' THEN d.input_status ELSE NULL END) AS day02,SUM(CASE WHEN d.INPUT_DAY = '03' THEN d.input_status ELSE NULL END) AS day03,SUM(CASE WHEN d.INPUT_DAY = '04' THEN d.input_status ELSE NULL END) AS day04,SUM(CASE WHEN d.INPUT_DAY = '05' THEN d.input_status ELSE NULL END) AS day05,SUM(CASE WHEN d.INPUT_DAY = '06' THEN d.input_status ELSE NULL END) AS day06,SUM(CASE WHEN d.INPUT_DAY = '07' THEN d.input_status ELSE NULL END) AS day07,SUM(CASE WHEN d.INPUT_DAY = '08' THEN d.input_status ELSE NULL END) AS day08,SUM(CASE WHEN d.INPUT_DAY = '09' THEN d.input_status ELSE NULL END) AS day09,SUM(CASE WHEN d.INPUT_DAY = '10' THEN d.input_status ELSE NULL END) AS day10,SUM(CASE WHEN d.INPUT_DAY = '11' THEN d.input_status ELSE NULL END) AS day11,SUM(CASE WHEN d.INPUT_DAY = '12' THEN d.input_status ELSE NULL END) AS day12,SUM(CASE WHEN d.INPUT_DAY = '13' THEN d.input_status ELSE NULL END) AS day13,SUM(CASE WHEN d.INPUT_DAY = '14' THEN d.input_status ELSE NULL END) AS day14,SUM(CASE WHEN d.INPUT_DAY = '15' THEN d.input_status ELSE NULL END) AS day15,SUM(CASE WHEN d.INPUT_DAY = '16' THEN d.input_status ELSE NULL END) AS day16,SUM(CASE WHEN d.INPUT_DAY = '17' THEN d.input_status ELSE NULL END) AS day17,SUM(CASE WHEN d.INPUT_DAY = '18' THEN d.input_status ELSE NULL END) AS day18,SUM(CASE WHEN d.INPUT_DAY = '19' THEN d.input_status ELSE NULL END) AS day19,SUM(CASE WHEN d.INPUT_DAY = '20' THEN d.input_status ELSE NULL END) AS day20,SUM(CASE WHEN d.INPUT_DAY = '21' THEN d.input_status ELSE NULL END) AS day21,SUM(CASE WHEN d.INPUT_DAY = '22' THEN d.input_status ELSE NULL END) AS day22,SUM(CASE WHEN d.INPUT_DAY = '23' THEN d.input_status ELSE NULL END) AS day23,SUM(CASE WHEN d.INPUT_DAY = '24' THEN d.input_status ELSE NULL END) AS day24,SUM(CASE WHEN d.INPUT_DAY = '25' THEN d.input_status ELSE NULL END) AS day25,SUM(CASE WHEN d.INPUT_DAY = '26' THEN d.input_status ELSE NULL END) AS day26,SUM(CASE WHEN d.INPUT_DAY = '27' THEN d.input_status ELSE NULL END) AS day27,SUM(CASE WHEN d.INPUT_DAY = '28' THEN d.input_status ELSE NULL END) AS day28,SUM(CASE WHEN d.INPUT_DAY = '29' THEN d.input_status ELSE NULL END) AS day29,SUM(CASE WHEN d.INPUT_DAY = '30' THEN d.input_status ELSE NULL END) AS day30,SUM(CASE WHEN d.INPUT_DAY = '31' THEN d.input_status ELSE NULL END) AS day31FROM OA_PM_PERSON_INPUT a,OA_PM_PROJECT b,OA_COMPANY_USER c,OA_PM_PERSON_INPUT_ITEM d<where>a.project_id=b.project_id and a.user_id= c.user_id and a.input_id=d.input_id<if test="parameterMap.project_id != null">AND a.project_id = #{parameterMap.project_id}</if><if test="parameterMap.user_name != null">AND c.user_name = #{parameterMap.user_name}</if><if test="parameterMap.input_ym != null">AND d.input_ym = #{parameterMap.input_ym}</if></where>GROUP BY a.project_id,a.user_id,b.project_name,c.user_name,d.input_id,d.input_ym
</select>

SUM(CASE WHEN ?? THEN ?? ELSE ?? END) AS ??相关推荐

  1. sum(case when) 学习

    Case具有两种格式.简单Case函数和Case搜索函数. -- 简单Case函数 CASE sex          WHEN '1' THEN '男'          WHEN '2' THEN ...

  2. count case when 与sum case when 的 区别

    sum(case when t.ride_num=1 then 1 else 0 end ) as ride_1_times count(case when t.ride_num=1 then 1 e ...

  3. mysql sum when then_MySQL中group by , sum , case when then 的使用

    在我们使用数据库的时候,可能会遇到需要进行统计的情况. 比如需要统计一下,下表中各个年份的胜负场数. 遇到这样的情况,我们应该怎么办呢? 在mysql中我们可以使用group by sum  case ...

  4. MySQL巧用sum,case...when...优化统计查询

    最近在公司做项目,涉及到开发统计报表相关的任务,由于数据量相对较多,之前写的查询语句查询五十万条数据大概需要十秒左右的样子,后来经过老大的指点利用sum,case...when...重写SQL性能一下 ...

  5. postgreSQL计算总数sum if case when

    假设postgreSQL中表名为user,现在需要计算每个用户参加过的次数(is_join字段为null时不算,表中的null并不是字符串''或者字符串'Null' ,而是数据库中的null类型) u ...

  6. mysql case when sum count_SQL语句为什么在这种case when情况下要用sum而不是count

    如下这个表TEST:category|commdity|price----------+----------+-------衣服|T恤|1000办公用品|打孔器|500厨房用具|菜刀|3000厨房用具 ...

  7. 当case when then else end 语句遇上sum或count等统计函数

    今天同事遇到问题,帮看问题的时候,我发现他写的sql好厉害啊,我都没有接触过,自己平常用的都是一些增删改查以及一些简单函数的操作.哈哈,又学一招,记录一下. 我需要按2个维度来分组,求出按这2个维度分 ...

  8. SAPABAP金色传说:SELECT SUM(CASE WHEN THEN END)语法示例

    文章目录 前言 一.SELECT SUM(CASE WHEN THEN END) 前言 ABAP语法博大精深 提示:以下是本篇文章正文内容 一.SELECT SUM(CASE WHEN THEN EN ...

  9. 【Mysql】日期、行变列(IF、CASE WHEN THEN)语句总结

    获取昨天的日期 日期相减函数 datediff select datediff(curdate(),INTERVAL 1 DAY) ; 删除Person表中重复的Email数据,只保留id最小的一条 ...

最新文章

  1. 禁用software reporter tool.exe 解决CPU高占用率的问题
  2. 【Linux系统编程学习】 GCC编译器
  3. mysql索引的使用及优化方法_MySQL中索引和优化的用法总结
  4. 小森林顺序_这篇微推价值过亿!仁恒公园世纪二期选房顺序“摇号”,1:7!
  5. vector容器——插入和删除
  6. [Hadoop]-Yarn-调度器篇
  7. 数学之美--读书笔记
  8. win7默认网关不可用_Win7自带图片查看器异常
  9. 教你一招,免费拆分pdf
  10. 基于c语言c8051f系列微控制器原理与应用,基于C语言C8051F系列微控制器原理与应用...
  11. 中移动浦发联合发布四款产品 ,NFC手机年底上市
  12. 逍遥模拟器使用指南(四、逍遥安卓模拟器电脑版xposed框架教程)
  13. ANSYS经典界面保存高清图片方法(用于科研绘图)
  14. Olivetti PR2/PR2E 打印机故障分析与排除
  15. 如何让Fresco支持HEIF/HEIC图片格式
  16. 刘润:四个层次决定企业存亡
  17. 专利查新报告该怎么做?
  18. 工具类JdbcUtils
  19. 复数集合作为数域C和数域R上的空间
  20. const , 拷贝构造函数,赋值操作符重载

热门文章

  1. SWD是一种串行调试接口
  2. esc键退出全屏 vue_解决了VUE在浏览器全屏下监听不到Esc键盘事件
  3. 荷包app软件测试,智能分贝测试仪app
  4. Springboot毕设项目企业财务管理系统lmm93java+VUE+Mybatis+Maven+Mysql+sprnig)
  5. 高德地图定位、添加定位图标、连线(二)
  6. WordPress支持ppt一键上传
  7. 如何让爆满的C盘腾出 10G空间
  8. Pandas学习笔记(二)—— Pandas索引
  9. sox处理mp3_SoX — 音频处理工具里的瑞士军刀
  10. 中创|又临双11淘宝崩了,中心化存储难以支撑