我在用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;
    }

这是我的案件陈述。我知道它不起作用,因为它不是一个有效的case语句。有人能帮我做一个有效的案例陈述吗?提前谢谢。
    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 .....

最佳答案

由于要检查空值并替换非空值,因此可以使用COALESCE function缩短查询。

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 ...

10-04 13:39