Vous devez garder à l’esprit que, à un niveau donné d’une instruction CASE, une fois que la première condition WHEN est évaluée à TRUE, l’instruction THEN est traitée et passe à la FIN.
Vous ne testez pas un seul champ pour cinq conditions différentes ; vous testez 5 champs différents pour l’une des deux conditions possibles. Il y a deux façons de gérer cela. Soit vous pouvez créer une instruction de CAS imbriquée à 5 niveaux de profondeur (avec une imbrication supplémentaire à chaque niveau jusqu’à 5, ce qui signifie de nombreuses instructions de CAS répétées aux différents niveaux), soit vous pouvez l’aplatir en faisant en sorte que vos conditions WHEN couvrent les 5 champs, et en les ordonnant de manière à ce qu’il y ait des combinaisons mutuellement exclusives pour chaque QUAND, par exemple.,
CAS
QUAND EST NUL ET EST NUL ET EST NUL ET EST NUL ALORS
QUAND QUAND N’EST PAS NUL ET EST NUL ET EST NUL ET EST NUL ET EST NUL ET EST NUL ALORS
* * * *
END
L’une ou l’autre approche fonctionnera probablement à peu près de la même manière, il s’agit donc simplement de savoir quelle structure est plus facile pour vous de jongler conceptuellement. Moi, je trouve l’imbrication au-delà de 3 niveaux assez déroutante.
Selon mon décompte, il y a 32 combinaisons différentes d’états NULL / non NULL pour les 5 champs (2 ^ 5ème), donc en utilisant la méthode flat, vous auriez besoin de 32 instructions WHEN. Chaque instruction THEN peut avoir besoin de plusieurs instructions, par exemple, ET ET ET.
Bonne chance