3
    DECLARE @TestVal int
SET @TestVal = 5

SELECT
    CASE
        WHEN @TestVal <=3 THEN 'Top 3'
        ELSE 'Other'
    END

我在网上看到了这个示例代码,但是我找不到没有表达式并且它有多个 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

还是我需要为每一行说 CASE WHEN?

4

3 回答 3

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

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

于 2009-02-24T16:53:23.583 回答
5

案例采用以下形式

CASE WHEN Condition THEN Result
     WHEN Condition2 THEN Result2
ELSE Default
END

编辑

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

于 2009-02-24T16:52:33.507 回答
0
    SELECT
       CASE
          WHEN @TestVal <=3  THEN 'Top 3'
          WHEN @TestVal <=10 THEN 'Top 10'
          WHEN @TestVAl <=25 THEN 'Top 25'
          ELSE 'Other'
       END

关于嵌套 case 语句,也可以这样做(sql 中最多允许 10 个嵌套 case 语句)

http://msdn.microsoft.com/en-us/library/ms181765.aspx

于 2013-04-11T20:40:49.017 回答