2011-03-23 84 views
0

我的任务是将旧报表程序转换为Oracle报表,当我需要加入两个查询以使报表生效时,我停下脚步。我不是SQL新手,但我确实需要帮助。SQL查询:如何在Oracle报表中加入两个SQL查询

对于Oracle Reports 11g,报表需要显示以下两个查询的结果,因此需要将这些查询连接到一个SQL查询中才能使报表生效。

首先查询:

select table_name 
    , to_char(load_date, 'MM/DD/ YYYY') as XDATE 
    , to_char(number_name) as NUMBER NAME 
    , round(sysdate-load_date) as DAYS 
    , 'E' AS TABLEIND 
from error_table 
where load_date is not null 
    and round(sysdate-load_date) > 15 
    and number_name not in 
    (select number_name 
    from table_comments) 
order by table_name 

第二个查询:

select table_name 
    , to_char(load_date, 'MM/DD/ YYYY') as XDATE 
    , to_char(number_name) as NUMBER NAME 
    , round(sysdate-load_date) as DAYS 
    , 'O' AS TABLEIND 
from other_table 
where load_date is not null 
    and round(sysdate-load_date) > 15 
    and number_name not in 
    (select number_name 
    from table_comments) 
order by table_name 

这两个查询的结果应该显示这两个查询与第一查询第一的结果,而第二查询第二。任何有关这个问题的帮助,高度赞赏。

回答

0

如果您必须以此格式将第一个查询的结果转储到具有标识列的临时表中,然后将第二个查询的结果转储到同一个表中。

然后选择从临时表进行排序关闭该标识列

+1

或联合声明中也许 – asawyer 2011-03-23 18:46:38

+0

如果您使用的联盟,你必须确保不消除重复行,但肯定会工作。我相信 – 2011-03-23 18:51:40

+1

UNION默认情况下消除了愚弄。但是,也许在个别已有的查询中除了*之外不会有任何的*。 – Tim 2011-03-23 18:52:43

1

如果你想获得这些出来的一个结果集,尝试他们之间的UNION。我相信,您可以通过TABLEIND,table_name排序整个结果集,按照您想要的方式进行排序。

0

您可以创建一个联合查询与现有查询,在线访问量:

select 1 as whichQuery, q1.col, q1.col, ... 
    from 
    (select....) as q1 
    union all 
    select 2 as whichQuery, q2.col, q2.col, ... 
    from 
    (select ....) as q2 

,然后你可以通过whichQuery订购。如果TABLEIND alpha排序值应该改变(并且不按您想要的顺序排序),那么这将保证您所需的顺序。

2
(Query1 
--leave out the "order by" line 
) 
UNION ALL 
(Query2 
--leave out the "order by" line, too 
) 
ORDER BY TABLEIND 
     , table_name