SQL中没有表达式CASE的多个WHEN?

Met*_*uru 3 sql case

    DECLARE @TestVal int
SET @TestVal = 5

SELECT
    CASE
        WHEN @TestVal <=3 THEN 'Top 3'
        ELSE 'Other'
    END
Run Code Online (Sandbox Code Playgroud)

我在网上看到了这个示例代码,但我找不到一个没有表达式的示例,并且它有多个WHEN,所以我想知道这种类型的东西是否正常:

    DECLARE @TestVal int
SET @TestVal = 5

SELECT
    CASE
        WHEN @TestVal <=3 THEN 'Top 3'
                WHEN (select ...) = 1 THEN 'Other Value'
                WHEN (select ...) = 2 THEN 'Other Value 2'
        ELSE 'Other'
    END
Run Code Online (Sandbox Code Playgroud)

或者我是否需要为每一行说CASE WHEN?

Joe*_*orn 7

是的,那没关系,但是我会垂直排列"WHEN"并解释它更像这样:

SELECT
    CASE
        WHEN @TestVal <=3  THEN 'Top 3'
        WHEN @TestVal <=10 THEN 'Top 10'
        WHEN @TestVAl <=25 THEN 'Top 25'
        ELSE 'Other'
    END
Run Code Online (Sandbox Code Playgroud)

格式化可能只是一个降价故障,但(select...)在您的示例中复杂应该是一个更简单的代码段.


Jos*_*rke 5

案例采用以下形式

CASE WHEN Condition THEN Result
     WHEN Condition2 THEN Result2
ELSE Default
END
Run Code Online (Sandbox Code Playgroud)

编辑

这假设您使用Microsoft SQL Server的其他DBMS可能不同