0

我需要帮助为视图编写 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。

4

2 回答 2

1
CASE b.Column1 WHEN column2 <> 'dev' then null 
when 1 THEN 'No' 
ELSE 'Yes' END AS Yes_or_No

参考

于 2012-12-11T18:28:34.343 回答
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和小写内部写了一个。

于 2012-12-11T18:30:27.513 回答