Je ne suis pas sûr s'il y a un concept ou un modèle facile à faire, donc je vais devoir le décrire.Comment grouper des colonnes dans la table sql pour le comptage
Disons que j'ai une table comme ceci:
CallID (uniqueidentifier)
CallDateTime (datetime)
CallIssue (varchar(100))
Pollution (bit)
Violation (bit)
Accident (bit)
General (bit)
Et je veux obtenir compte sur un rapport. 30 appels différents chefs d'accusation ressemblerait à ceci:
Pollution: 4
Violation: 3
Accident: 2
General: 7
Pollution & Violation: 5
Pollution & Accident: 9
ce qui se passerait est que si un appel avait à la fois la pollution et violation mis en elles seraient comptées séparément que les appels ayant seulement la pollution ou de violation.
Existe-t-il un moyen, autre qu'un curseur, de faire cela?
Nous utilisons SQL 2005.
Juste pour clarifier, il n'y a pas de colonne Pollution & Violation. Je pourrais utiliser ceci, mais je devrais faire: SOMME (CAS WHEN Pollution = 1 ET Violation = 1 ALORS 1 ELSE 0 FIN) AS [Pollution & Violation], SOMME (CAS QUAND Pollution = 1 ET Violation = 0 THEN 1 ELSE 0 END) AS [Pollution], SOMME (CAS O WH Pollution = 0 ET Violation = 1 ALORS 1 ELSE 0 FIN) AS [Violation] –
Je comprends qu'il n'y a pas de colonne "Pollution & Violation". C'est juste une opération sur les colonnes "Pollution" et "Violation" car vous avez affaire à des bits. Si les deux colonnes sont vraies, l'instruction renvoie 1, sinon 0. Identique à la solution de Mikael, n'utilisant que le fait que vous avez des bits. Vous pouvez le tester vous-même. Il suffit d'exécuter une requête en faisant un SELECT COUNT (*) où Pollution & Accident = 1. – Khepri