SQL: Condizione annidata nel caso in cui la clausola
-
25-10-2019 - |
Domanda
Ho una clausola Case-When
come questo;
(CASE WHEN A.YAZ_ADRES IS NULL
THEN (B.IS_ADRES1 +' '+B.IS_ADRES2)
ELSE A.YAZ_ADRES END)
Voglio usare una condizione dopo THEN
Ad esempio;
(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)
Come posso utilizzare condizioni annidato in Case-When
?
Soluzione
È possibile clausole nido CASE
come questo:
(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)
Altri suggerimenti
Nest un'altra CASE
invece di un IF
È possibile utilizzare CASE WHEN ... THEN ... (WHEN ... THEN ...)+ ELSE ... END
. Esso restituisce l'espressione THEN
del prima corrispondenza condizione WHEN
:
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)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow