我有以下的SQL查询,想知道是否可以使其中的SUM()部分动态化,这样我就不需要手动输入category_id (2和3)。
SELECT a.project_id, COUNT(a.id) AS Total, SUM(CASE WHEN a.category_id = 2 AND a.`status` < 80 THEN 1 ELSE 0 END) AS 'Bugs En cours', SUM(CASE WHEN a.category_id = 2 AND a.`status` >= 80 THEN 1 ELSE 0 END) AS 'Bugs Resolu', SUM(CASE WHEN a.category_id = 3 AND a.`status` < 80 THEN 1 ELSE 0 END) AS 'Ameliorations En cours', SUM(CASE WHEN a.category_id = 3 AND a.`status` >= 80 THEN 1 ELSE 0 END) AS 'Ameliorations Resolu' FROM bugs a GROUP BY a.project_id HAVING COUNT(a.id) > 0
目标是根据category_id和status('En cours'或'Resolu')列出项目id和不同类型的Anomalies的计数。
这个查询的问题是,如果我们添加了另一个category,我就必须手动编辑这个查询,这并不理想。
P粉9086436112023-09-07 14:42:30
下面的动态SQL正在构建从具有类别的参考表中的条件和总和。
project_id | 总计 | 进行中的错误 | 已解决的错误 | 进行中的缺陷 | 已解决的缺陷 | 进行中的改进 | 已解决的改进 |
---|---|---|---|---|---|---|---|
0 | 5 | 1 | 0 | 1 | 1 | 1 | 1 |