Oracle de comptage le résultat d'une instruction de CAS
Le But /Background
- Je suis le peignage à travers un workorder système pour voir si les ordres de travail, répondre à certains critères
- (par exemple, si ils ne sont pas à l'étape 3, scène 2, ou même l'étape 1).
- Ces "étapes" ont été définis par la direction.
- J'aimerais groupe par l'année de données, puis le métier, et puis voir comment de nombreux ordres de travail pour que le regroupement dans chacune de ces 3 "étapes".
La Requête
select yearreported
, theleadcraft
, count(NotStage3)
, count(NotStage2)
, count(NotStage1)
from
(
select extract(year from reportdate) as YearReported
, Nvl(leadcraft, 'NONE') as TheLeadCraft
, CASE when status not in ('CAN', 'CLOSE') then 1 else 0 END as NotStage3
, CASE when status not in ('CAN', 'CLOSE', 'COMP') then 1 else 0 END as NotStage2
, CASE when status not in ('CAN', 'CLOSE', 'COMP', 'WORKDONE') then 1 else 0 END as NotStage1
from workorder
) query
group by yearreported, theleadcraft;
;
Le Problème /Question
- Cela semble fonctionner, mais tout ce qui compte pour notstage1, notstage2, et notstage1 viennent de la même manière, en dépit de l'interrogation de certaines situations et de trouver un que je sais être différent.
- Est-ce la bonne façon de mettre en œuvre une instruction case que je veux, compter?
- Dois-je utiliser DECODE() à la place?
Merci d'avance pour toute aide!
- double possible de la sélection masculine et féminine des sièges selon l'âge
Vous devez vous connecter pour publier un commentaire.
Les 1 et les 0 fois COUNT() de la même-peut-être que vous voulez SOMME(), ou de COUNT() 1 ou null.
Comte est sans compter NULL -s. Essayez ceci:
Vous ne devriez pas utiliser
decode
.La façon dont vous avez à votre requête écrite, vous voulez vraiment
sum()
, pascount()
:La fonction
count()
a un nom trompeur lorsqu'il est appliqué à une colonne (à mon avis). C'est compter le nombre de valeurs non NULLES. Depuis "1" et "0" sont tous les deux non NULS, ils comptabilisés.oui, vous pouvez le faire par simple modification sur votre déclaration ci-dessus
essayez ceci :
ce qui concerne,