首页 > 解决方案 > 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

标签: sqloracleora-00907

解决方案


错误信息具有误导性;真正的问题是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

推荐阅读