我需要帮助为视图编写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。
答案 0 :(得分:1)
CASE b.Column1 WHEN column2 <> 'dev' then null
when 1 THEN 'No'
ELSE 'Yes' END AS Yes_or_No
答案 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
和小写字母内部写了一个。