我有以下的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 |