Case语句非法表达式SQL



通过在Teradata SQL 中运行此代码段,我不知道错误消息"CASE表达式的WHEN子句中的非法表达式"来自何处

CASE 
WHEN f_ev1.PROCESS_NO IN 
(
SELECT
numbers.PROCESS_NO
FROM numbers
WHERE 
numbers.FLAG = 1
GROUP BY 1 --no duplicates
) THEN 2
END AS Status,

如果我写IN(一些数字(,它就可以正常工作。但它是一个由50个唯一值组成的列表,这些值可能会随着时间的推移而变化。

我的建议是,您可以将50个值加载到另一个表中,并将该表与主表连接起来

table_50-具有50个唯一值的表格main_tbl-主表

insert into table_50 ( process_no ) SELECT numbers.PROCESS_NO FROM numbers WHERE numbers.FLAG = 1 GROUP BY 1 ;
Select case when b.process_no is null then 2  end as status from main_table a
left join table_50 b
on a.process_no= b.process_no

从性能角度来看,这更有效,您也可以根据您的要求更新表_50中的值

最新更新