2011-09-05 88 views
0

我有一個Case-When子句這樣;SQL:案例中的嵌套條件當條款

(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中使用嵌套條件?

回答

1

可以嵌套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) 
3

巢另一個CASE代替IF

+0

感謝。我不能使用IF條件嗎?總是會是案例? –

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

您可以使用CASE WHEN ... THEN ... (WHEN ... THEN ...)+ ELSE ... END。它返回THEN表達的第一匹配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 
+1

不錯的建議(關於'CASE'在第一個匹配的'WHEN'條件下停止),但是嵌套的'CASE'避免重複'A.YAZ_ADRES IS NULL'條件。 –