Bonjour

Je cherche dans un premier temps à compter les occurrences d'un CODE dans une liste, disons ('X','Y','Z') et une liste ('K','L','M') ainsi que lorsque le code n'appartient à aucune liste:

Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
SELECT MATABLE_1.NUM_DOSSIER,MATABLE_2.NOM,
SUM(CASE WHEN CODE IN ('X','Y','Z') THEN 1 ELSE 0 END) AS CODE_DU_FORFAIT_A,
SUM(CASE WHEN CODE IN ('K','L','M') THEN 1 ELSE 0 END) AS CODE_DU_FORFAIT_B,
SUM(CASE WHEN CODE NOT IN ('X','Y','Z','K','L','M') THEN 1 ELSE 0 END) AS CODE_HORS_FORFAIT
FROM MATABLE_1 INNER JOIN MATABLE_2 ON
MATABLE_1.a=MATABLE_2.A
WHERE (...)
GROUP BY MATABLE_1.NUM_DOSSIER,MATABLE_2.NOM


Cela m'affiche:

-NUM_DOSSIER -NOM- -CODE_DU_FORFAIT_A- -CODE_DU_FORFAIT_B- -CODE_HORS_FORFAIT

avec dans chaque colonne le nombre d'occurrences


Je voudrais maintenant, sur ces critères avoir la chose suivante:

-Sachant que si pour un NOM et un NUM_DOSSIER donné: Au moins une occurrence d'un code de la liste ('K','L','ZM) donne obligatoirement un FORFAIT_B, ce quelquesoit la présence ou non d'autres codes de l'autre liste ou n'appartenant à aucune liste

-Sachant que la présence d'au moins un CODE de la liste ('X','Y','Z') mais SANS AUCUNE occurrence de code de la liste ('X','Y','Z') donne un FORFAIT_A

-Dans les autres cas, un code n'appartenant à aucun CODE des 2 listes: ('K','L','M','X','Y','Z') donne ABSENCE_DE_FORFAIT

Je veux afficher les colonne de la façon suivante:

-NUM_DOSSIER -NOM- -TYPE_FORFAIT

Comment faire?

Merci de vos réponses