在Oracle中使用具有内部联接的子查询时出现“缺少右括号”错误

在Oracle中使用具有内部联接的子查询时出现“缺少右括号”错误,oracle,subquery,inner-join,Oracle,Subquery,Inner Join,我有一个Oracle命令 Select offers.OFR_STAT,OFFER_DETAILS.*,PrevData.* From offers INNER JOIN OFFER_DETAILS ON OFFER_DETAILS.OFFER_ID=offers.OFFER_ID INNER JOIN ( SELECT InnerOfrDtl.* FROM OFFER_DETAILS as InnerOfrDtl WHERE InnerOfrDtl.offer

我有一个Oracle命令

Select offers.OFR_STAT,OFFER_DETAILS.*,PrevData.*
From offers
INNER JOIN OFFER_DETAILS
    ON OFFER_DETAILS.OFFER_ID=offers.OFFER_ID
INNER JOIN (
    SELECT InnerOfrDtl.*
    FROM OFFER_DETAILS as InnerOfrDtl 
    WHERE InnerOfrDtl.offer_id=offers.offer_id
) AS PrevData
    ON PrevData.SCHEDULE_TYPE=OFFER_DETAILS.SCHEDULE_TYPE
运行时,我收到一条错误消息,即缺少右括号。
在这里,我想使用一个子查询进行内部联接。

尝试删除右括号后面和PrevData之前的AS。据我所知,Oracle不允许表别名使用关键字As

查询不需要子查询。你可以写:

SELECT o.OFR_STAT, d.*, p.*
  FROM offers o
  JOIN Offer_Details d ON d.Offer_ID = o.Offer_ID
  JOIN Offer_Details p
    ON p.Offer_ID = o.Offer_ID
   AND p.Schedule_Type = d.Schedule_Type
我不完全相信该查询有意义,但这完全是另一回事。

删除子查询的AS关键字,Oracle不支持:

Select offers.OFR_STAT,OFFER_DETAILS.*,PrevData.*
From offers
INNER JOIN OFFER_DETAILS
    ON OFFER_DETAILS.OFFER_ID=offers.OFFER_ID
INNER JOIN (
    SELECT InnerOfrDtl.*
    FROM OFFER_DETAILS as InnerOfrDtl 
    WHERE InnerOfrDtl.offer_id=offers.offer_id
) PrevData  -- <<<< here is the change
    ON PrevData.SCHEDULE_TYPE=OFFER_DETAILS.SCHEDULE_TYPE

Oracle 8i的旧版本当然,9i也可能在显式内部联接方面有问题。用隐式非ANSI替换它们?内部联接可以解决此问题


为什么要使用子查询?显示的查询在没有子查询的情况下可以正常工作。