Ceci est ma requête initiale:Comment faire pour SUM une instruction case contenant une instruction select imbriquée?
select
CASE WHEN a.TO_WG_ID is null
and a.CREATED_DATE_TIME =
(select min(b.created_date_time) from ymtn.message b
where b.thread_id = a.thread_id) THEN 1 ELSE 0
END AS "Created"
from ymtn.MESSAGE a
left join YMTN.WORKGROUP b
ON a.FROM_WG_ID=b.WORKGROUP_ID
where b.WORKGROUP_ID='1STOP_PROCESS'
Il me donne une colonne avec un groupe de 1' et 0. Tout ce que je veux sortir est la somme .. juste un nombre par exemple. 1691. Si je place un SUM devant l'instruction case, j'obtiens cette erreur: Msg 130, niveau 15, état 1, ligne 5 Impossible d'exécuter une fonction d'agrégation sur une expression contenant un agrégat ou une sous-requête. Alors, comment je fais ça? Je l'ai fait travailler avec cette requête:
select count(CREATED_DATE_TIME) as 'Created'
from ymtn.MESSAGE a
LEFT JOIN YMTN.WORKGROUP b
ON a.FROM_WG_ID=b.WORKGROUP_ID
where CREATED_DATE_TIME=(SELECT MIN(b.CREATED_DATE_TIME) FROM YMTN.MESSAGE b WHERE
b.THREAD_ID = a.THREAD_ID)
and a.TO_WG_ID is null
and b.WORKGROUP_ID='1STOP_PROCESS'
Cependant, je le veux travailler dans la déclaration des cas et ne pas avoir à déplacer le imbriquée sélectionner vers le bas à la clause WHERE.
Cela fonctionne. Merci pour cette solution. –