Cas et de Compter dans SQL Server 2008
J'ai une table qui stocke plusieurs éléments pour un état et je veux obtenir le comte pour tous les états, selon des conditions spécifiques. J'ai écrit cette requête:
SELECT
State_ID,
State_Name,
State_All= CASE WHEN type1=1 AND type2=1 THEN COUNT(Id) END
State_w= CASE WHEN type1=2 AND type2=1 THEN COUNT(Id) END
State_s= CASE WHEN type1=2 AND type2=2 THEN COUNT(Id) END
FROM
tblStates
mais j'obtiens cette Erreur:
Column 'State_ID' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Quand j'ai ajouté GROUP BY
clause De State_ID,j'ai eu d'erreur ci-dessus à nouveau pour State_Name,et lorsqu'il est ajouté State_Name à GROUP BY
clause ,je suis d'erreur pour State_All,State_w,State_s.
Je n'ai pas de colonne appelée State_All,State_w,State_s dans ma table.
Comment je peux obtenir le comte en fonction des conditions spécifiques sans l'aide de CURSORS
?
Vous devez vous connecter pour publier un commentaire.
Serait-il résoudre ce problème?
Vous étiez sur la bonne voie.
Vous mettez la condition à l'intérieur de la COMPTER comme ça. COMPTER ignore les valeurs Null (ce qui est implicite d'AUTRE dans le CAS) alors vous ne pouvez compter que de vrais matchs. Vous avez besoin du GROUPE EN trop.
Votre erreur vient de l'utilisation de type1 et type2 à l'extérieur du COMTE
Vous pouvez modifier Compter à SOMME parce que chaque résultat record 1
Vous devez ajouter les deux colonnes à la fin de votre requête:
GROUP BY State_ID, State_Name
une je suis d'erreur pour State_All,... .