SUM(CASE WHEN ?? THEN ?? ELSE ?? END) AS ??

不念不忘少年蓝@ 2022-05-19 06:50 279阅读 0赞
  1. case...when...then...else...end,是在from前面,可以改变记录中某字段的值,不能决定是否显示该记录;
  2. where,是在from后面,不可以改变记录中某字段的值,但可以决定是否显示该记录。
  3. case...when...then...else...end,可用于对同一记录的多个字段求和,带分支判断。
  4. 另外,对字段判断和处理,往往需要强制类型转换。
  5. <select id="findByPage" resultType="com.huarui.mapping.entity.PmpersoninputEntity" parameterType="com.huarui.common.entity.web.Req">
  6. 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,
  7. SUM(CASE WHEN d.INPUT_DAY = '01' THEN d.input_status ELSE NULL END) AS day01,
  8. SUM(CASE WHEN d.INPUT_DAY = '02' THEN d.input_status ELSE NULL END) AS day02,
  9. SUM(CASE WHEN d.INPUT_DAY = '03' THEN d.input_status ELSE NULL END) AS day03,
  10. SUM(CASE WHEN d.INPUT_DAY = '04' THEN d.input_status ELSE NULL END) AS day04,
  11. SUM(CASE WHEN d.INPUT_DAY = '05' THEN d.input_status ELSE NULL END) AS day05,
  12. SUM(CASE WHEN d.INPUT_DAY = '06' THEN d.input_status ELSE NULL END) AS day06,
  13. SUM(CASE WHEN d.INPUT_DAY = '07' THEN d.input_status ELSE NULL END) AS day07,
  14. SUM(CASE WHEN d.INPUT_DAY = '08' THEN d.input_status ELSE NULL END) AS day08,
  15. SUM(CASE WHEN d.INPUT_DAY = '09' THEN d.input_status ELSE NULL END) AS day09,
  16. SUM(CASE WHEN d.INPUT_DAY = '10' THEN d.input_status ELSE NULL END) AS day10,
  17. SUM(CASE WHEN d.INPUT_DAY = '11' THEN d.input_status ELSE NULL END) AS day11,
  18. SUM(CASE WHEN d.INPUT_DAY = '12' THEN d.input_status ELSE NULL END) AS day12,
  19. SUM(CASE WHEN d.INPUT_DAY = '13' THEN d.input_status ELSE NULL END) AS day13,
  20. SUM(CASE WHEN d.INPUT_DAY = '14' THEN d.input_status ELSE NULL END) AS day14,
  21. SUM(CASE WHEN d.INPUT_DAY = '15' THEN d.input_status ELSE NULL END) AS day15,
  22. SUM(CASE WHEN d.INPUT_DAY = '16' THEN d.input_status ELSE NULL END) AS day16,
  23. SUM(CASE WHEN d.INPUT_DAY = '17' THEN d.input_status ELSE NULL END) AS day17,
  24. SUM(CASE WHEN d.INPUT_DAY = '18' THEN d.input_status ELSE NULL END) AS day18,
  25. SUM(CASE WHEN d.INPUT_DAY = '19' THEN d.input_status ELSE NULL END) AS day19,
  26. SUM(CASE WHEN d.INPUT_DAY = '20' THEN d.input_status ELSE NULL END) AS day20,
  27. SUM(CASE WHEN d.INPUT_DAY = '21' THEN d.input_status ELSE NULL END) AS day21,
  28. SUM(CASE WHEN d.INPUT_DAY = '22' THEN d.input_status ELSE NULL END) AS day22,
  29. SUM(CASE WHEN d.INPUT_DAY = '23' THEN d.input_status ELSE NULL END) AS day23,
  30. SUM(CASE WHEN d.INPUT_DAY = '24' THEN d.input_status ELSE NULL END) AS day24,
  31. SUM(CASE WHEN d.INPUT_DAY = '25' THEN d.input_status ELSE NULL END) AS day25,
  32. SUM(CASE WHEN d.INPUT_DAY = '26' THEN d.input_status ELSE NULL END) AS day26,
  33. SUM(CASE WHEN d.INPUT_DAY = '27' THEN d.input_status ELSE NULL END) AS day27,
  34. SUM(CASE WHEN d.INPUT_DAY = '28' THEN d.input_status ELSE NULL END) AS day28,
  35. SUM(CASE WHEN d.INPUT_DAY = '29' THEN d.input_status ELSE NULL END) AS day29,
  36. SUM(CASE WHEN d.INPUT_DAY = '30' THEN d.input_status ELSE NULL END) AS day30,
  37. SUM(CASE WHEN d.INPUT_DAY = '31' THEN d.input_status ELSE NULL END) AS day31
  38. FROM OA_PM_PERSON_INPUT a,OA_PM_PROJECT b,OA_COMPANY_USER c,OA_PM_PERSON_INPUT_ITEM d
  39. <where>
  40. a.project_id=b.project_id and a.user_id= c.user_id and a.input_id=d.input_id
  41. <if test="parameterMap.project_id != null">
  42. AND a.project_id = #{parameterMap.project_id}
  43. </if>
  44. <if test="parameterMap.user_name != null">
  45. AND c.user_name = #{parameterMap.user_name}
  46. </if>
  47. <if test="parameterMap.input_ym != null">
  48. AND d.input_ym = #{parameterMap.input_ym}
  49. </if>
  50. </where>
  51. GROUP BY a.project_id,a.user_id,b.project_name,c.user_name,d.input_id,d.input_ym
  52. </select>

发表评论

表情:
评论列表 (有 0 条评论,279人围观)

还没有评论,来说两句吧...

相关阅读