Saya mempunyai pertanyaan SQL berikut dan tertanya-tanya sama ada saya boleh menjadikan SUM() sebahagian daripadanya dinamik supaya saya tidak perlu memasukkan category_id (2 dan 3) secara manual.
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
Matlamatnya adalah untuk menyenaraikan id item dan kiraan pelbagai jenis Anomali berdasarkan kategori_id dan status ('En cours' atau 'Resolu').
Masalah dengan pertanyaan ini ialah jika kita menambah kategori lain, saya perlu mengedit pertanyaan ini secara manual, yang tidak sesuai.
SQL dinamik di bawah sedang membina keadaan dan jumlah daripada jadual rujukan dengan kategori.