SQL: вложенное условие в случае, когда предложение - PullRequest
0 голосов
/ 05 сентября 2011

У меня есть предложение Case-When, подобное этому;

(CASE WHEN A.YAZ_ADRES IS NULL
         THEN (B.IS_ADRES1 +' '+B.IS_ADRES2) 
         ELSE A.YAZ_ADRES END) 

Я хочу использовать условие после THEN

Например;

(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) 

Как я могу использовать вложенное условие в Case-When?

Ответы [ 4 ]

3 голосов
/ 05 сентября 2011

Вы можете использовать CASE WHEN ... THEN ... (WHEN ... THEN ...)+ ELSE ... END. Возвращает выражение THEN условия first match 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
3 голосов
/ 05 сентября 2011

Гнездо другого CASE вместо IF

1 голос
/ 05 сентября 2011

Вы можете вкладывать CASE предложения вроде этого:

(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)
1 голос
/ 05 сентября 2011
(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)  
...