【发布时间】:2014-01-09 17:04:00
【问题描述】:
我尝试在 WHERE 子句中使用 COALESCE,但出现以下错误:
ORA-00907:缺少右括号 SQL stmt 失败:
如果我删除 COALESCE,我不会再收到错误消息。我不确定为什么它会给我这个错误,因为括号似乎是正确的。这是我的 SQL 语句:
SELECT S.OPRID, A.OPRNAME, S.EMAIL_ADDR
FROM TABLE1 S, TABLE2 A
WHERE COALESCE(S.REHIRE_DT,S.ORIG_HIRE_DT)
BETWEEN (TO_DATE(TO_CHAR(SYSDATE,'YYYY-MM- DD'),'YYYY-MM-DD') - 3 DAY)
AND (TO_DATE(TO_CHAR(SYSDATE,'YYYY-MM-DD'),'YYYY-MM-DD') - 1 DAY)
AND S.EMPLSTATUS = 'A'
AND A.EMPLID = S.EMPLID
ORDER BY S.OPRID
【问题讨论】:
-
to_date 调用中的“DAY”是什么意思?
-
是的 LitteBobbyTables,我已经把这两个表达式都放在了 Coalesce 函数中。
-
老程序员,我们正在从当前日期减去 3 天,并检查表上的日期是否在最近两天。
-
为什么这个查询的等价物可以在 DB2 中工作? SELECT S.OPRID , A.OPRNAME , S.EMAIL_ADDR 从 TABLE1 S , TABLE2 A WHERE COALESCE(S.REHIRE_DT,S.ORIG_HIRE_DT) 在当前日期 - 3 天和当前日期 - 1 天和 S.EMPLSTATUS = 'A' 之间A.EMPLID = S.EMPLID 由 S.OPRID 订购
-
我看到这个错误弹出是为了告诉用户你有太多括号,而不是你实际上缺少一个。