0
select
    column1,
    case 
        when column1 = 1 then select ename from emp where sal=2000
        when column1 = 2 then select ename from emp where sal=3000
        when column1 is null then 'NULL'
        else to_number('123')
    end as result from values (1), (2), (null);

SQL 编译错误:在 '32' 附近的位置 37 处解析错误行 4。位置 44 处的语法错误第 4 行意外“来自”。位置 67 处的第 4 行语法错误意外'`'。在 '32' 附近的位置 37 处解析错误行 5。位置 25 处的语法错误第 5 行意外的 'then'。

4

1 回答 1

2

子查询应放在括号中,如下所示:

select
column1,
case 
    when column1 = 1 then (select ename from emp where sal=2000)
    when column1 = 2 then (select ename from emp where sal=3000)
    else to_number('123')
end as result from values (1), (2), (null);

参考:在 CASE THEN 内选择

于 2021-09-30T06:42:28.990 回答