Snowflake中CASE语句内嵌套SELECT出现多处语法错误如何解决
错误原因
- 语法规则不满足:Snowflake 要求 CASE 表达式的
THEN后接标量子查询时,必须用括号将整个 SELECT 语句完整包裹。你当前的写法没有加括号,SQL 解析器会把SELECT识别为 CASE 结构外的关键字,无法匹配正常的 CASE 语法结构,因此抛出解析错误。 - 返回值类型不统一:当前 CASE 各分支返回值类型不一致,前两个分支和
column1 is null分支返回字符串类型,ELSE 分支返回数值类型,语法修正后也可能触发类型不匹配报错。
修复后的代码
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 '123' end as result from values (1), (2), (null);
补充说明
如果 emp 表中同一个 sal 取值对应多条 ename 记录,需要在对应子查询末尾增加 LIMIT 1,确保子查询只返回单个标量值,否则会触发「单行子查询返回多行」的运行错误。
内容的提问来源于stack exchange,提问作者user16595206
相关产品推荐
相关产品推荐

