【发布时间】:2021-04-30 19:26:47
【问题描述】:
我有这样的MySQL表(实际场景中会有更多的项目):
| ID | item | date |
|---|---|---|
| 1 | a | 2021-04-01 |
| 2 | a | 2021-04-05 |
| 3 | a | 2021-05-07 |
| 4 | b | 2021-07-09 |
我想创建一个表格(结果将显示在 HTML 表格中),其中 每个唯一项目 名称将有 一行 并且还有 counts of全年每个月的项目。因此,上述案例的结果将如下所示:
| item | m1 | m2 | m3 | m4 | m5 | m6 | m7 | m8 | m9 | m10 | m11 | m12 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| a | 0 | 0 | 0 | 2 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| b | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
我可以通过 2 个单独的 SELECT 查询来做到这一点,其中第二个查询可能在 for 循环中,但我无法弄清楚如何在一个 SELECT 或一个多选查询,如果可能的话。
我只走了那么远,然后就卡住了:
SELECT MONTH(date) as m, COUNT(item) as c
FROM itemtable
WHERE YEAR(date)=YEAR(CURRENT_DATE()) AND item="a"
GROUP BY MONTH(date)
【问题讨论】:
-
考虑处理应用代码中数据显示的问题
-
@CaiusJard 不,这只是强调我想要成行。删除它。谢谢