SQL: condición anidada en caso de que la cláusula
-
25-10-2019 - |
Pregunta
tengo un Case-When
cláusula como esta;
(CASE WHEN A.YAZ_ADRES IS NULL
THEN (B.IS_ADRES1 +' '+B.IS_ADRES2)
ELSE A.YAZ_ADRES END)
Quiero usar una condición después THEN
Por ejemplo;
(CASE WHEN A.YAZ_ADRES IS NULL
THEN (IF B.TUZ = 'T' THEN (B.IS_ADRES1 +' '+B.IS_ADRES2) ELSE ((B.EV_ADRES1 +' '+B.EV_ADRES2)))
ELSE A.YAZ_ADRES END)
¿Cómo puedo usar la condición anidada en Case-When
?
Solución
Puedes anidar CASE
cláusulas como esta:
(CASE WHEN A.YAZ_ADRES IS NULL
THEN
(CASE WHEN B.TUZ = 'T'
THEN (B.IS_ADRES1 +' '+B.IS_ADRES2)
ELSE ((B.EV_ADRES1 +' '+B.EV_ADRES2))
END)
ELSE A.YAZ_ADRES
END)
Otros consejos
Anidar otro CASE
en lugar de un IF
Puedes usar CASE WHEN ... THEN ... (WHEN ... THEN ...)+ ELSE ... END
. Devuelve el THEN
expresión de la primero pareo WHEN
condición:
CASE WHEN A.YAZ_ADRES IS NULL AND B.TUZ = 'T'
THEN B.IS_ADRES1 +' '+B.IS_ADRES2
WHEN A.YAZ_ADRES IS NULL
THEN B.EV_ADRES1 +' '+B.EV_ADRES2
ELSE A.YAZ_ADRES
END
(CASE WHEN A.YAZ_ADRES IS NULL
THEN (CASE WHEN B.TUZ = 'T' THEN (B.IS_ADRES1 +' '+B.IS_ADRES2) ELSE ((B.EV_ADRES1 +' '+B.EV_ADRES2)) END)
ELSE A.YAZ_ADRES END)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow