Bien sûr, cela devrait être simple, mais j'ai un problème avec le cerveau .
Dans SQL Server 2005, comment ajoutez-vous un "nombre supplémentaire" à une requête GROUP BY ?
Considérer ce qui suit…
;WITH DATA AS ( SELECT 1 AS ID, 1 AS TYPEID, 0 AS ACTIONNEEDED UNION SELECT 2 AS ID, 1 AS TYPEID, 0 AS ACTIONNEEDED UNION SELECT 3 AS ID, 2 AS TYPEID, 0 AS ACTIONNEEDED UNION SELECT 4 AS ID, 2 AS TYPEID, 1 AS ACTIONNEEDED UNION SELECT 5 AS ID, 2 AS TYPEID, 0 AS ACTIONNEEDED ) SELECT TYPEID, COUNT(*) AS TOTAL FROM DATA GROUP BY TYPEID
Le résultat est…
TYPEID TOTAL 1 2 2 3
Mais j'ai besoin d'une colonne supplémentaire qui totalise le nombre de lignes où ACTIONNEEDED=1
…
TYPEID TOTAL ACTIONNEEDED 1 2 0 2 3 1
Note: malheureusement, en raison des contraintes du projet, je suis limité aux réponses compatibles SQL Server 2005
Vous pouvez utiliser SUM
avec une instruction CASE
interne:
SELECT TYPEID, COUNT(*) AS TOTAL, SUM(CASE WHEN ActionNeeded = 1 THEN 1 ELSE 0 END) AS ACTIONNEEDED FROM DATA GROUP BY TYPEID