2010-06-25 6 views
1

Voici le scénario:T-SQL 2005: Compter toutes les lignes et les lignes répondant à certains critères

J'ai une table avec 3 colonnes: « KeyColumn », « SubKeyColumn » et « BooleanColumn », où les deux premiers sont les primaires clés de la table.

Pour ma requête, je voudrais compter le nombre de lignes qu'il y a pour une valeur donnée dans 'KeyColumn', et j'aimerais aussi savoir lesquelles ont la valeur true pour 'BooleanColumn'. Mon idée initiale était de créer une requête comme ceci:

SELECT 
    COUNT(*) 
    ,COUNT(CASE WHEN BooleanColumn = 1 THEN 1 ELSE 0 END) 
FROM 
    MyTable 
GROUP BY 
    KeyColumn 

Cependant, la 2ème partie ne fonctionne pas (je ne suis pas tout à fait sûr pourquoi je pensais que ce serait pour commencer). Est-il possible de faire quelque chose comme ça dans une requête? Ou vais-je avoir besoin de faire plusieurs requêtes pour y arriver?

+0

allez-vous ajouter KeyColumn à la requête de sorte que vous savez ce que vous regardez? – DForck42

Répondre

5

Modifier COUNT to SUM dans la 2ème partie. ;)

+0

Nice. Eh bien, c'était facile ... aujourd'hui, ce n'est pas ma journée. Merci! – John

+0

à peu près ce que j'allais dire. – DForck42

2

... CAS QUAND BooleanColumn = 1 ALORS 1 AUTRE NULL FIN ...

COUNT compte les lignes non NULL.

+0

Je vois; Je suppose que cela aide quand vous savez ce que count compte réellement! – John

0

Vous pouvez également faire SUM (CAST (BooleanColumn AS TINYINT))

Questions connexes