TSQL Count 'Où' État
Comment puis-je mettre en œuvre le "sens" de la suite pseudo-instruction SQL:
COUNT(distinct id where attribute1 > 0)
En d'autres termes, comment puis-je faire conditionnelle, distincte de comptage des états?
Merci!
OriginalL'auteur CodeKingPlusPlus | 2012-07-26
Vous devez vous connecter pour publier un commentaire.
Bien, si vous pouvez filtrer la totalité de la requête, puis LittleBobbyTables a déjà la réponse pour vous. Si pas, vous pouvez obtenir cette colonne comme suit:
+1, et vous ne vous rappelez-vous correctement: lorsque
ELSE
est omis,ELSE NULL
est implicite. Sur une autre note, je ne comprends pas vraiment cette "performance" préoccupation à l'égard du conditionnel de l'agrégation. Je veux dire, quelles sont les alternatives àCASE
dans une fonction d'agrégation (par exemple, lorsque votre requête doit retourner les deux conditionnels et inconditionnels comte)?Je vois, mais vous l'ai déjà précisé que dans votre réponse, donc votre dernière déclaration sonne comme si quelqu'un pourrait être ennuyé avec une tout à fait légitime, utilisation de la réserve de l'agrégation. Je voulais juste préciser si vraiment vous vouliez dire. Et en général, je suis d'accord avec vous que cette chose être abusé, comme tout le reste.
J'ai eu parfois un besoin légitime pour ce genre de logique, et il s'agit habituellement de plusieurs agrégats dans le même SELECT, comme "count où FieldX n'est pas nulle" et puis "count où FieldX est null" pour comparer les chiffres les uns avec les autres, ou "count où FieldY = 2" et "count où FieldY = 3", etc., encore une fois, de comparer les chiffres. Et je pense que c'est ce CodeKingPP était après. J'ai aimé cette solution parce que c'est ce que j'ai l'habitude de faire dans ces situations, et les commentaires entre Canon et AndriyM sont utile de souligner le potentiel de l'incompréhension ou de mauvaise utilisation.
OriginalL'auteur canon
Vous avez assez bien eu:
OriginalL'auteur LittleBobbyTables