代码抛出错误 ORA-00907:缺少右括号
Posted
技术标签:
【中文标题】代码抛出错误 ORA-00907:缺少右括号【英文标题】:Code throws Error ORA-00907: missing right parenthesis 【发布时间】:2018-03-29 03:53:06 【问题描述】:谁能解释一下为什么会出现这个错误?
SELECT CONTRACT_ID, DATEKEY, 'Projection', '1', OPEN_BALANCE,
PRINC_REPAYMENT, INTEREST, PAR_PREPAYMENT, FULL_REDEMPTION, REDRAW_AMOUNT, PRIN_DEFAULTS,
PRIN_RECOVERY, PRIN_DEL, INTE_DEL, DEL_PRIN_COLL, DEL_INT_COLL, CLOSE_PRIN_BAL, EXT_ID,
LAS_ACTIVE_FLG, PROD_ID, ASSET_TYP_ID, CPT_ID, ACCRETION, CASHFLOW_DT
FROM FACT_PWOR_CASHFLOW
WHERE ACTUAL_FLG = 'Y' AND LATEST_PROJ_IND = '0' AND LAS_ACTIVE_FLG = 'Y'
UNION
(SELECT CONTRACT_ID, DATEKEY_COLL, 'Actual', '1', SUM(OPENING_BALANCE) SUM_OPEN_BAL,
SUM(MI_PRINCIPLE) SUM_MI_PRIN, SUM(MI_INTEREST) SUM_MI_INTER, SUM(PARTIAL_PREPAYMENT) SUM_PAR_PREPAY,
SUM(FULL_REDEMPTION) SUM_FULL_REDEM, SUM(TTL_AMT_REDRAW) SUM_TTL_AMT,
'0', '0', '0', '0', '0', '0', SUM(CLOSING_BALANCE) SUM_CLOS_BAL, '0', 'Y',
PROD_ID, ASSET_TYPE_ID, CPT_ID, '0', COLLECTION_START_DT
FROM FACT_PWOR_COLLECTION
WHERE LAS_ACTIVE_FLG = 'Y'
GROUP BY CONTRACT_ID, DATEKEY_COLL, PROD_ID, ASSET_TYPE_ID, CPT_ID, COLLECTION_START_DT
ORDER BY CONTRACT_ID, DATEKEY_COLL);
【问题讨论】:
【参考方案1】:这个错误很常见,因为您在嵌套查询中有一个ORDER BY
(请参阅第二个SELECT
中括号的使用位置)。
Oracle 不支持,所以它会给你这个错误。您可以在没有嵌套查询的情况下重写它,或者删除顺序,它应该可以工作
【讨论】:
以上是关于代码抛出错误 ORA-00907:缺少右括号的主要内容,如果未能解决你的问题,请参考以下文章
Oracle SQL - 奇怪的“ORA-00907 缺少右括号”错误
将 XML 数据存储在表中的 PL/SQL 过程抛出错误(23,102):PL/SQL:ORA-00907:缺少右括号