如何使用';在';DB2SQL中case语句中的子句

如何使用';在';DB2SQL中case语句中的子句,sql,db2,Sql,Db2,在IBM DB2 sql中运行类似的查询时出现错误,如下所示: select case when col1 in (select colA from tabl01) then 'xyz' else 'abc' end as colD from tabl02 错误就像 查找错误-DB2数据库错误:错误[42625][IBM][DB2]SQL0582N VALUES子句、in谓词、GROUP BY子句或ORDER BY子句中的大小写表达式

在IBM DB2 sql中运行类似的查询时出现错误,如下所示:

select case 
          when col1 in (select colA from tabl01) then 'xyz' 
          else 'abc' 
       end as colD
from tabl02
错误就像

查找错误-DB2数据库错误:错误[42625][IBM][DB2]SQL0582N VALUES子句、in谓词、GROUP BY子句或ORDER BY子句中的大小写表达式不能包含量化谓词、使用fullselect的in谓词或EXISTS谓词


我认为这个问题是因为在我的案例陈述中使用了“in”。如何删除此错误?

像这样更改您的查询。应该适用于大多数DB2平台

select case 
          when exists (select 1 from tabl01 lkup 
                        where lkup.cola = src.col1 
                        fetch first 1 rows only) 
            then 'xyz' 
          else 'abc' 
       end as cold
from tabl02 src

像这样更改您的查询。应该适用于大多数DB2平台

select case 
          when exists (select 1 from tabl01 lkup 
                        where lkup.cola = src.col1 
                        fetch first 1 rows only) 
            then 'xyz' 
          else 'abc' 
       end as cold
from tabl02 src

这回答了你的问题吗?Db2版本和平台是什么?Db2版本V11.1,我在toad数据点版本4.3中运行查询,查询在11.1上运行良好。请提供一个具有此类错误的完全可复制的示例。我的要求是,每当tabl01中存在col1时,应返回一组值,如果不存在,则另一组值应作为colD从tabl02返回。你能给我一个建议吗。两个表之间没有匹配的列。这是否回答了您的问题?Db2版本和平台是什么?Db2版本V11.1,我在toad数据点版本4.3中运行查询,查询在11.1上运行良好。请提供一个具有此类错误的完全可复制的示例。我的要求是,每当tabl01中存在col1时,应返回一组值,如果不存在,则另一组值应作为colD从tabl02返回。你能给我一个建议吗。两个表之间没有匹配的列。