MySQL查询以获取每月的项目计数-显示在每个项目的行中

MySQL查询以获取每月的项目计数-显示在每个项目的行中,mysql,select,Mysql,Select,我有这样的MySQL表(在真实场景中会有更多项): 身份证件 项目 日期 1. A. 2021-04-01 2. A. 2021-04-05 3. A. 2021-05-07 4. B 2021-07-09 这是一个枢轴操作。在MySQL中,我通常通过条件聚合来实现: SELECT item, SUM(CASE WHEN MONTH(date) = 1 THEN 1 ELSE 0 END) as m1, SUM(CASE WHEN MONTH(date) = 2 THEN 1 ELSE

我有这样的MySQL表(在真实场景中会有更多项):

身份证件 项目 日期 1. A. 2021-04-01 2. A. 2021-04-05 3. A. 2021-05-07 4. B 2021-07-09
这是一个枢轴操作。在MySQL中,我通常通过条件聚合来实现:

SELECT item,
  SUM(CASE WHEN MONTH(date) = 1 THEN 1 ELSE 0 END) as m1, 
  SUM(CASE WHEN MONTH(date) = 2 THEN 1 ELSE 0 END) as m2, 
  ...
  SUM(CASE WHEN MONTH(date) = 12 THEN 1 ELSE 0 END) as m12
FROM itemtable 
WHERE date BETWEEN '2021-01-01' and '2021-12-31'
GROUP BY item
要查看其工作原理,请删除SUM/GROUP BY并查看原始大小写WHEN-它将数据按对角线分割成12列,然后SUM/GROUP将其压缩为一行:

   A           A           A B C
   B     ->      B     ->
   C               C

我同意草莓的观点,即这通常最好在应用程序代码中处理,而不是在DB中处理,但由于数据固定在“第1个月”到“第12个月”,因此在DB中处理相对容易一些

考虑在应用程序中处理数据显示问题code@CaiusJard不,只是压力,我要一排一排的。移除它。谢谢