簡體   English   中英

嵌套的case語句sql

[英]Nested case statement sql

我在SQL中編寫case語句時遇到問題。 我的第一個問題是:是否可以在select語句中的SQL查詢中將if語句編寫為case語句?

如果不是,請查看下面的案例陳述,並幫助/指導我進入有效格式。 謝謝,非常感謝!

IF (var1 = 1){
do this1;
IF (var 1 = 2){
    Do this2;
    }Else{ 
    do something else1;
    }
Else if (Var 1 = 3){
    Do this3; 
    }Else{ 
    Do something else2;
    }   

這是我的案例陳述。 我知道它不起作用,因為它不是一個有效的案例陳述。 有人可以幫我做一個有效的案例陳述。 提前致謝。

    SELECT
CASE
    WHEN apple.type = 1 OR apple.type = 2
    THEN basket.S1
    ELSE 
        CASE 
            WHEN apple.type = 0 AND basket.S2 is null
            THEN basket.S1
            ELSE basket.S2  
        ELSE 
            CASE
                WHEN apple.type = 3 and basket.s3 is null
                THEN basket.S1
                ELSE basket.S3
            END
        END
    END 
FROM .....
WHERE ..... 

我認為你的案例陳述過於復雜,看你的第一個例子你的案例陳述應該相當簡單,

就像是 ....

SELECT CASE 
           WHEN @Var1 = 1 THEN 'Something 1'
           WHEN @Var1 = 2 THEN 'Something 2'
           WHEN @Var1 = 3 THEN 'Something 3'
           ELSE 'Something Else'
       END 
FROM .....
WHERE .....

你的案例陳述我們可以寫這樣的東西......

SELECT
    CASE
        WHEN apple.[type] IN (1,2)
        THEN basket.S1
        WHEN apple.type = 0 AND basket.S2 is null
        THEN basket.S1
        WHEN apple.type = 3 and basket.s3 is null
        THEN basket.S1
        ELSE basket.S3
    END

由於您正在檢查空值並替換非空值,因此可以使用COALESCE函數縮短查詢時間。

SELECT
  CASE
    WHEN apple.type IN (1, 2) THEN basket.s1
    WHEN apple.type = 0 THEN COALESCE(basket.s2, basket.s1)
    WHEN apple.type = 3 THEN COALESCE(basket.s3, basket.s1)
  END
FROM ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM