2012-12-11 58 views
0

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

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

这是很大的,它从另一个表转换column1的一个叫做列“Yes_or_No”,其显示为“否”时column1为1,和“是”时column1为“0”或NULL 。

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

回答

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壳和下壳内部一书中写道。

+0

这很好,谢谢。 – dp3

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

reference