SELECT * FROM A,B
WHERE
A.COMP_CODE = B.COMP_CODE (+)
AND
A.DATE = TO_CHAR(ADD_MONTHS(TO_DATE(B.DATE,'yyyymm'),-1),'YYYYMM') (+)当我执行这条语句时,我得到了错误: ORA-00936。当我删除语句末尾的(+)时,它可以工作,但我希望在此语句中使用keep (+)。
发布于 2017-11-15 14:55:43
当使用旧的(+)语法进行外部连接时,(+)应该紧跟在您的外部连接的列之后,而不是整个表达式:
SELECT *
FROM A, B
WHERE A.COMP_CODE = B.COMP_CODE (+)
AND
A.DATE = TO_CHAR(ADD_MONTHS(TO_DATE(B.DATE (+), 'yyyymm'), 'YYYYMM')
-- Here -----------------------------------^但老实说,这种语法几年来一直被认为是不推荐使用的。使用现代显式outer join语法可能会更好:
SELECT *
FROM A
LEFT OUTER JOIN B ON -- Here!
A.COMP_CODE = B.COMP_CODE
AND
A.DATE = TO_CHAR(ADD_MONTHS(TO_DATE(B.DATE, 'yyyymm'), 'YYYYMM')https://stackoverflow.com/questions/47301073
复制相似问题