View的条件CASE语句

时间:2012-12-11 18:24:56

标签: tsql case

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

2 个答案:

答案 0 :(得分:1)

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

reference

答案 1 :(得分: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和小写字母内部写了一个。