我需要帮助来try 透视从以下查询派生的表:
WITH RECURSIVE dates AS
(
SELECT start_date as period, end_date
FROM progetti
WHERE id = 1
UNION ALL
SELECT DATE_ADD(period, INTERVAL 1 MONTH), end_date
FROM dates
WHERE period < end_date - INTERVAL 1 MONTH
)
SELECT DATE_FORMAT(d.period, '%m-%Y') AS period, COALESCE(total, 0) AS total, COALESCE(s.tipo,0) AS tipo
FROM dates d
LEFT JOIN (
SELECT DATE_FORMAT(created_on, '%m-%Y') as 'period',
COUNT(items_header.id) as 'total' ,
items_header.tipo
FROM items_header
WHERE progetto=1
GROUP BY DATE_FORMAT(created_on, '%m-%Y')
) s on s.period = DATE_FORMAT(d.period, '%m-%Y');
并返回以下数据集:
period | total | tipo |
---|---|---|
01-2022 | 0 | 0 |
02-2022 | 0 | 0 |
03-2022 | 1 | 1 |
03-2022 | 1 | 3 |
04-2022 | 1 | 3 |
05-2022 | 3 | 1 |
06-2022 | 2 | 1 |
07-2022 | 0 | 0 |
08-2022 | 0 | 0 |
09-2022 | 0 | 0 |
10-2022 | 0 | 0 |
11-2022 | 0 | 0 |
12-2022 | 0 | 0 |
我试图建立的是一个不同的结果:
period | tipo 1 | tipo=2 | tipo=3 | tipo=4 |
---|---|---|---|---|
01-2022 | 0 | 0 | 0 | 0 |
02-2022 | 0 | 0 | 0 | 0 |
03-2022 | 1 | 0 | 1 | 0 |
04-2022 | 0 | 0 | 1 | 0 |
05-2022 | 3 | 1 | 0 | 0 |
06-2022 | 2 | 0 | 0 | 0 |
07-2022 | 0 | 0 | 0 | 0 |
08-2022 | 0 | 0 | 0 | 0 |
09-2022 | 0 | 0 | 0 | 0 |
10-2022 | 0 | 0 | 0 | 0 |
11-2022 | 0 | 0 | 0 | 0 |
12-2022 | 0 | 0 | 0 | 0 |
因此,月份只重复一次,项目计数按列中的tipo拆分.我正在try 构建一个将填充chart.js图的数据集(每个tipo一行),我正在寻找如何在MySQL中构建它.
编辑: items_header表
ID | created_on | tipo |
---|---|---|
1 | 2022-03-03 | 1 |
依此类推(是票务系统表头表)
Item_Type_CATALOG表
id | description |
---|---|
1 | A |
2 | B |
3 | C |
4 | D |