Oracle报表中的从属WITH子句

Oracle报表中的从属WITH子句,oracle,oracle11g,report,Oracle,Oracle11g,Report,为什么连接到11g DB的Oracle报表生成器不允许以下有效SQL with abc as (Select 1 as x from dual), def as (Select 2 as y from abc) select x,y from abc,def 我得到ORA-00942:表或视图不存在从==>abc中选择2作为y 对于以上内容。 当我从连接到同一11g数据库的sqldeveloper执行上述SQL时,它运行起来没有任何问题。 但是,报告生成器接受以下独立WITH条款: with

为什么连接到11g DB的Oracle报表生成器不允许以下有效SQL

with abc as 
(Select 1 as x from dual),
def as
(Select 2 as y from abc)
select x,y from abc,def
我得到ORA-00942:表或视图不存在从==>abc中选择2作为y 对于以上内容。 当我从连接到同一11g数据库的sqldeveloper执行上述SQL时,它运行起来没有任何问题。 但是,报告生成器接受以下独立WITH条款:

with abc as 
(Select 1 as x from dual),
def as
(Select 2 as y from dual)
select x,y from abc,def
在reports builder中有没有办法做到这一点,或者我应该在第二个的FROM子句中用子句填充第一个呢?。提前谢谢


备注:报表生成器版本为10.1.2.0.2

Oracle论坛上发布了关于WITH子句问题的解决方法:

你可以用它来解决你的问题

或者,您是否可以在查询中不只是在内联视图中使用当前WITH查询

编辑: 像这样使用你的代码

SELECT x, y
  FROM 
       (SELECT 1 AS x
          FROM dual) abc,
       (SELECT 2 AS y
          FROM dual) def

我也遇到过同样的问题,我就是这样克服的: 在使用内联别名的位置,显式地将其连接到内部、外部。。。去另一张桌子。例如:

with MyTabA as(
    select 1 theID, 'AA'
    thetext from dual
),
MytabB as(
    select 1 theID, '123 street Paul'
    theaddress from dual union select 2 theID, '123 street Paul'
    theaddress from dual union select 3 theID, '123 street Paul'
    theaddress from dual
)
Select MytabA.theid, mytaba.thetext, mytabb.theaddress
from MyTabA, MyTabB
Where MyTabA.theID = MyTabB.theid
;

你在用什么版本的Oracle Reports Builder编写报告?@Ollie:请看我修改过的问题。我不明白你的意思。你能给出一个在内联视图中使用它的例子吗?Nvm,我知道了。内联视图->在另一个SELECT的FROM子句中使用SELECT。我不想这样做的原因是,实际的查询非常庞大,在FROM子句中使用它会对可读性产生很大影响。@Digdugh,我很感激您希望在查询中提高可读性,但让它工作是第一步。也许您可以将最复杂的查询放入WITH子句中,并内联较不复杂的查询?不太好,但会有用的。你是对的。我可能会把它用作一个内联视图。谢谢你抽出时间。