【问题标题】:Multiple WHEN inside no-expression CASE in SQL?SQL中无表达式CASE中的多个WHEN?
【发布时间】:2009-02-24 16:48:44
【问题描述】:
    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?

【问题讨论】:

    标签: sql case


    【解决方案1】:

    是的,这很好,但我会将“WHEN”垂直排列并解释如下:

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

    格式可能只是 Markdown 故障,但您示例中的 (select...) 使应该更简单的 sn-p 变得复杂。

    【讨论】:

      【解决方案2】:

      Case 采用以下形式

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

      编辑

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

      【讨论】:

        【解决方案3】:
            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

        【讨论】:

          猜你喜欢
          • 2012-09-20
          • 2021-08-30
          • 2021-03-26
          • 2018-02-01
          • 2018-06-11
          • 2018-04-04
          • 1970-01-01
          • 1970-01-01
          • 2021-12-08
          相关资源
          最近更新 更多