【发布时间】:2019-09-24 19:39:03
【问题描述】:
我是 oracle 新手,下面是我的 SQL。
SELECT * FROM TABLE1 WHERE COLUMN1 = 'YES'
AND COLUMN2 IN (
CASE WHEN EXISTS(SELECT * FROM TABLE1 WHERE COLUMN1 = 'YES' AND COLUMN2 NOT LIKE '%NO%')
THEN
SELECT COLUMN2 FROM TABLE1 WHERE COLUMN1 = 'YES' AND COLUMN2 NOT LIKE '%YES%'
ELSE
SELECT COLUMN2 FROM TABLE1 WHERE COLUMN1 = 'YES' AND COLUMN2 NOT LIKE '%YES%' END)
它给出 ORA-00936: 在 then 语句中缺少表达式。我做错了什么?
【问题讨论】:
-
如果您只评估存在,则不应返回整个数据集。考虑使用这样的东西:
CASE WHEN EXISTS(SELECT 'TRUE' FROM TABLE1...