J'ai un tableau d'inventaire avec une condition à savoir nouveau, utilisé, autre, et je suis interroger un petit ensemble de ces données, et il est possible que tous le jeu d'enregistrements contient seulement 1 ou toutes les conditions. J'ai essayé d'utiliser une déclaration de cas, mais si l'une des conditions ne se trouve pas rien pour cette condition est revenu, et je en ai besoin pour retourner 0comptage des enregistrements sur la même table avec des valeurs différentes éventuellement aucun serveur SQL 2008
C'est ce que je l'ai essayé jusqu'à présent:
select(
case
when new_used = 'N' then 'new'
when new_used = 'U' then 'used'
when new_used = 'O' then 'other'
end
)as conditions,
count(*) as count
from myDB
where something = something
group by(
case
when New_Used = 'N' then 'new'
when New_Used = 'U' then 'used'
when New_Used = 'O' then 'other'
end
)
Ce
renvoie les données comme:
conditions | count
------------------
new 10
used 45
Je suis en train d'obtenir les données pour revenir à ce qui suit:
conditions | count
------------------
new | 10
used | 45
other | 0
Merci à l'avance
fonctionne comme un charme. Pourriez-vous expliquer la partie "WITH (...)? –
Cela s'appelle une [expression de table commune] (http://technet.microsoft.com/fr-fr/library/ms175972.aspx) .Non nécessaire dans ce cas, Je préfère juste à une approche de table dérivée (qui est ce que Mike a utilisé dans sa réponse) –
Vous pourriez également être intéressé par l'article sur [Using Common Table Expressions] (http://technet.microsoft.com/fr-fr/) /library/ms190766(v=sql.105).aspx) Je l'ai trouvé utile en plus de l'article de CTE auquel Aaron fait référence dans son commentaire: –