【问题标题】:Conditional CASE statement for ViewView 的条件 CASE 语句
【发布时间】:2012-12-11 18:24:55
【问题描述】:

我需要帮助为视图编写 CASE 语句,该语句根据不同列的值以不同方式转换列。例如:

 CASE b.Column1 WHEN 1 THEN 'No' ELSE 'Yes' END AS Yes_or_No

这很棒,它将 Column1 从另一个表转换为名为“Yes_or_No”的列,当 Column1 为 1 时显示“No”,当 Column1 为“0”或 NULL 时显示“Yes”。

问题是,我希望仅当视图中的另一列 Column2 具有名为“Dev”的值时才会发生这种情况。因此,如果 Column2 的值为“Dev”,则上面的 CASE 语句应该生效。如果 Column2 的值为 'Test' 或 'Prod',那么我希望 'Yes_or_No' 为 NULL。

【问题讨论】:

    标签: tsql case


    【解决方案1】:

    一个简单的方法是嵌套 case 语句:

    CASE WHEN Column2 = 'Dev' THEN
           case b.Column1 when 1 then 'No' else 'Yes' end
         WHEN Column2 in (  'Test', 'Prod' ) THEN 
           Null 
    END  AS Yes_or_No
    

    为了提高可读性,我在大写外部case 和小写内部写了一个。

    【讨论】:

      【解决方案2】:
      CASE b.Column1 WHEN column2 <> 'dev' then null 
      when 1 THEN 'No' 
      ELSE 'Yes' END AS Yes_or_No
      

      reference

      【讨论】:

        猜你喜欢
        • 2012-11-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-07
        相关资源
        最近更新 更多