Debe tener en cuenta que, en cualquier nivel dado de una sentencia CASE, una vez que la primera condición WHEN se evalúa como VERDADERA, la sentencia THEN se procesa y salta al FINAL.

No está probando un solo campo para cinco condiciones diferentes; está probando 5 campos diferentes para una de las dos condiciones posibles. Hay dos maneras de manejar esto. Puede crear una instrucción de mayúsculas anidadas de 5 niveles de profundidad (con más anidamiento en cada nivel hasta 5, lo que significa que se repiten muchas instrucciones de mayúsculas y minúsculas en los diversos niveles), o puede aplanarla haciendo que sus condiciones de CUÁNDO cubran los 5 campos y ordenándolos de tal manera que haya combinaciones mutuamente exclusivas para cada CUÁNDO, p. ej.,

CASE
CUANDO ES NULL Y ES NULL Y ES NULL Y ES NULL Y ES NULL ENTONCES
CUANDO CUANDO NO ES NULL Y ES NULL Y ES NULL Y ES NULL Y ES NULL ENTONCES
* * * *

END

Cualquiera de los enfoques probablemente tendrá el mismo rendimiento, por lo que es solo una cuestión de qué estructura es más fácil para usted hacer malabares conceptualmente. Para mí, anidar más allá de los 3 niveles es bastante confuso.

Según mi cuenta, hay 32 combinaciones diferentes de estados NULOS/no NULOS para los 5 campos (2^5), por lo que utilizando el método plano, necesitaría 32 sentencias WHEN. Cada instrucción THEN puede necesitar tener varias instrucciones, por ejemplo, AND Y Y .

Buena suerte

Deja una respuesta

Tu dirección de correo electrónico no será publicada.