2011-03-23 112 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