ORA-00907:缺少右括号,但我有匹配的对

  • 本文关键字:ORA-00907 sql oracle ora-00907
  • 更新时间 :
  • 英文 :


我在此查询中收到缺少右括号的错误。我在这里错过了什么,我看到 5 个左括号和 5 个右括号。 我试图做的是只返回具有最新日期的行。

WITH snCTE AS 
(
SELECT
T1.column1
,T1.column2
,T2.column3
,T2.column4
,T1.datefield
,ROW_NUMBER() OVER (PARTITION BY column1 ORDER BY datefield DESC) AS RN
FROM dBtable1 T1
LEFT OUTER JOIN dBtable2 T2 ON (T1.columnid=T2.columnid AND T1.otherfield=T2.otherfield)
WHERE EXISTS (SELECT 1 FROM dbtable3 AS T3 WHERE T3.column1 = T1.column1)
)
SELECT column1, column2, column3, column4, datefield
FROM snCTE
WHERE snCTE.RN = 1

错误消息具有误导性;真正的问题是 Oracle 不支持表别名中的AS,而仅适用于列,因此

FROM dbtable3 AS T3

应编辑成

FROM dbtable3 T3

例如:

SQL> select 1 as ONE from dual;
ONE
----------
1
SQL> select 1 as ONE from dual D;
ONE
----------
1
SQL> select 1 as ONE from dual as D;
select 1 as ONE from dual as D
*
ERROR at line 1:
ORA-00933: SQL command not properly ended

错误ORA-00907的来源是使用FROM dbtable3 AS T3中的AS, 因为,当使用AS的别名子查询时,Oracle 数据库中不允许使用。

因此,只需删除该AS关键字即可。

相关内容

  • 没有找到相关文章

最新更新