我有一个表(items_header),其中存储了一些带有创建日期的票证,我想计算每个月/每年创建了多少票证。到目前为止,我可以通过以下查询来做到这一点:
SELECT DATE_FORMAT(created_on, '%m-%Y') as 'period', COUNT(items_header.id) as 'total'
FROM items_header JOIN progetti ON items_header.progetto=progetti.id
WHERE progetto=1
GROUP BY DATE_FORMAT(created_on, '%m-%Y');
此查询仅返回至少已创建票证的月份的数据。
时期 | 全部的 |
---|---|
03-2022 | 2 |
04-2022 | 1 |
05-2022 | 3 |
06-2022 | 2 |
我有另一个表(progetti),其中存储每个项目的开始日期和结束日期。对于项目 1(示例中的项目)日期为 2022-01-01 到 2023-06-30,我想将此信息添加到查询中,以便它返回:
时期 | 全部的 |
---|---|
01-2022 | 0 |
02-2022 | 0 |
03-2022 | 2 |
04-2022 | 1 |
05-2022 | 3 |
06-2022 | 2 |
07-2022 | 0 |
08-2022 | 0 |
09-2022 | 0 |
10-2022 | 0 |
11-2022 | 0 |
12-2022 | 0 |
01-2022 | 0 |
02-2022 | 0 |
03-2022 | 0 |
04-2022 | 0 |
05-2022 | 0 |
06-2022 | 0 |
我开始在两个表之间创建联接,但随后在创建预期结果表时陷入困境。
编辑表progetti:
ID | 开始日期 | 结束日期 |
---|---|---|
1 | 2022-01-01 | 2023-06-30 |
2 | 2022-01-01 | 2022-12-31 |
您需要创建一个 CTE,生成所选项目中所有月份的列表,然后应用 a
LEFT JOIN
将此生成的日期连接到您的子查询:演示在这里