我有这个小问题,我无法解决。
我有这个疑问:
选择 DATE_FORMAT(fecha, '%M') 作为月份,计数(distinctrow 终端)作为 NT2023 FROM 日记,其中 operacion = 'venta' 且年份(fecha)='2022' GROUP by DATE_FORMAT(fecha, '%m')
我得到 2 列,其中一列是月份,另一列是 2022 年活跃终端数量
我想再获得 2023 年和 2024 年的 2 个专栏,有什么线索吗?
这就是我得到的:
月 | NT2022 |
---|---|
二月 | 5 |
三月 | 8 |
四月 | 24 |
五月 | 29 |
六月 | 29 |
七月 | 31 |
八月 | 36 |
九月 | 51 |
十月 | 60 |
十一月 | 66 |
十二月 | 71 |
这就是我想要得到的:
月 | NT2022 | NT2023 | NT2024 |
---|---|---|---|
一月 | 0 | 73 | 158 |
二月 | 5 | 83 | 161 |
三月 | 8 | 83 | 168 |
四月 | 24 | 91 | 170 |
五月 | 29 | 93 | 173 |
六月 | 29 | 105 | 180 |
七月 | 31 | 113 | 183 |
八月 | 36 | 122 | 189 |
九月 | 51 | 127 | 193 |
十月 | 60 | 134 | 201 |
十一月 | 66 | 145 | 203 |
十二月 | 71 | 152 | 205 |
终于找到方法了,这里是:
SELECT DATE_FORMAT(fecha, '%M') as Meses,
COUNT(DISTINCT CASE WHEN year(fecha) = '2022' THEN Terminal END) AS Y0,
COUNT(DISTINCT CASE WHEN year(fecha) = '2023' THEN Terminal END) AS Y1,
COUNT(DISTINCT CASE WHEN year(fecha) = '2024' THEN Terminal END) AS Y2
From journal where operacion = 'venta' group by DATE_FORMAT(fecha, '%m') order by month(fecha)