嵌套Case用于案例陈述的硬编码结果

时间:2017-03-08 11:02:14

标签: sql oracle

我有一个与此类似的数据集;

col1 col2 col3
1     YES  NO
2     NO   YES

我正在尝试应用case语句,

case when col1 = 1 then col2
     when col1 = 2 then col3 end as newcol

现在newcol在输出中的值为YES/NO。是否可以在上述case条件中应用其他case,以便我可以将YES硬编码为Y,将NO硬编码为N

我通过在外部查询中添加case语句得到了结果。是否有任何替代方法,如嵌套case

我也可以使用列别名case

来应用newcol条件

1 个答案:

答案 0 :(得分:3)

您可以在case周围添加案例表达式,如下所示:

case (
    case
        when col1 = 1 then col2
        when col1 = 2 then col3
    end
) when 'YES' then 'Y' else 'N' end as newcol

SUBSTR会在没有条件的情况下选择YESNO的第一个字符:

SUBSTR(
    case
        when col1 = 1 then col2
        when col1 = 2 then col3
    end
,   1
,   1
) as newcol