2010-03-04 66 views
1
SELECT * FROM(
     (SELECT 
      count(DISTINCT RECEPIENT_ID) as NoOfUsers, 
      TO_CHAR(ACTN_TAKE_DATA_TM,'YYYY-MM-DD') as accDate 
     FROM 
      ALRT_PLATFORM_ALRT_HSTRY 
     where 
      APPL_CD like 'EBP' and 
      ALRT_RSPNS_FROM_CLIENT_ID like 'BB' 
      group by TO_CHAR(ACTN_TAKE_DATA_TM,'YYYY-MM-DD') 
     ) b, 

     (SELECT 
      count(DISTINCT RECEPIENT_ID) as NoOfUsers, 
      TO_CHAR(ACTN_TAKE_DATA_TM,'YYYY-MM-DD') as accDate 
     FROM 
      ALRT_PLATFORM_ALRT 
     where 
      APPL_CD like 'EBP' and 
      ALRT_RSPNS_FROM_CLIENT_ID like 'BB' 
      group by TO_CHAR(ACTN_TAKE_DATA_TM,'YYYY-MM-DD') 
     ) f 
     ) 

此查詢按以下格式返回數據:如何分配兩個SQL查詢的結果?

NOOFUSERS    ACCDATE NOOFUSERS    ACCDATE  
---------------------- ---------- ---------------------- ---------- 
2      2009-12-21 1      2010-03-01 
2      2009-12-21 2      2010-03-02 
2      2009-12-21 1      2010-03-03 
1      2009-12-23 1      2010-03-01 

是有可能俱樂部兩個表的reuslt: 很期待的數據是這種格式:

NOOFUSERS    ACCDATE  
---------------------- ---------- 
2      2009-12-21 
1      2009-12-23 
1      2010-01-02 
1      2010-01-04 //till here its table one data 
1      2010-03-01 //from here its table TWO data 
2      2010-03-02 
1      2010-03-03 

謝謝:)

回答

2

使用UNION ALL而不是後選列會將後續的UNION ALL語句附加到原始選擇。小心你需要每個選擇語句中的相同數量的列。

UNION ALL確保組合結果不被排序/混合(第一個查詢在第二個之前返回)。常規的UNION可以/將混合/混合/排序結果。

SELECT 
      count(DISTINCT RECEPIENT_ID) as NoOfUsers, 
      TO_CHAR(ACTN_TAKE_DATA_TM,'YYYY-MM-DD') as accDate 
     FROM 
      ALRT_PLATFORM_ALRT_HSTRY 
     where 
      APPL_CD like 'EBP' and 
      ALRT_RSPNS_FROM_CLIENT_ID like 'BB' 
      group by TO_CHAR(ACTN_TAKE_DATA_TM,'YYYY-MM-DD') 


UNION ALL 

     SELECT 
      count(DISTINCT RECEPIENT_ID) as NoOfUsers, 
      TO_CHAR(ACTN_TAKE_DATA_TM,'YYYY-MM-DD') as accDate 
     FROM 
      ALRT_PLATFORM_ALRT 
     where 
      APPL_CD like 'EBP' and 
      ALRT_RSPNS_FROM_CLIENT_ID like 'BB' 
      group by TO_CHAR(ACTN_TAKE_DATA_TM,'YYYY-MM-DD') 
+1

我不會對結果的順序返回計數。如果沒有ORDER BY子句,則返回的訂單行是未指定的,如果您依賴某個訂單,您可能會在某一天遇到大麻煩。 – erikkallen 2010-03-04 10:26:53

+0

也是如此,應該提到UNION會過濾掉重複(DISTINCT查詢),而UNION ALL則不會。 – cairnz 2010-03-04 11:34:23

1

也許你必須使用UNION運算符? http://dev.mysql.com/doc/refman/5.5/en/union.html

SELECT count(DISTINCT RECEPIENT_ID) as NoOfUsers, 
      TO_CHAR(ACTN_TAKE_DATA_TM,'YYYY-MM-DD') as accDate 
     FROM 
      ALRT_PLATFORM_ALRT_HSTRY 
     where 
      APPL_CD like 'EBP' and 
      ALRT_RSPNS_FROM_CLIENT_ID like 'BB' 
      group by TO_CHAR(ACTN_TAKE_DATA_TM,'YYYY-MM-DD') 

UNION  
    SELECT count(DISTINCT RECEPIENT_ID) as NoOfUsers, 
      TO_CHAR(ACTN_TAKE_DATA_TM,'YYYY-MM-DD') as accDate 
     FROM 
      ALRT_PLATFORM_ALRT 
     where 
      APPL_CD like 'EBP' and 
      ALRT_RSPNS_FROM_CLIENT_ID like 'BB' 
      group by TO_CHAR(ACTN_TAKE_DATA_TM,'YYYY-MM-DD') 
0

嘗試聯合聲明

(選擇1)聯盟(選擇2)

SELECT 
     count(DISTINCT RECEPIENT_ID) as NoOfUsers, 
     TO_CHAR(ACTN_TAKE_DATA_TM,'YYYY-MM-DD') as accDate 
    FROM 
     ALRT_PLATFORM_ALRT_HSTRY 
    where 
     APPL_CD like 'EBP' and 
     ALRT_RSPNS_FROM_CLIENT_ID like 'BB' 
     group by TO_CHAR(ACTN_TAKE_DATA_TM,'YYYY-MM-DD') 

UNION 

    SELECT 
     count(DISTINCT RECEPIENT_ID) as NoOfUsers, 
     TO_CHAR(ACTN_TAKE_DATA_TM,'YYYY-MM-DD') as accDate 
    FROM 
     ALRT_PLATFORM_ALRT 
    where 
     APPL_CD like 'EBP' and 
     ALRT_RSPNS_FROM_CLIENT_ID like 'BB' 
     group by TO_CHAR(ACTN_TAKE_DATA_TM,'YYYY-MM-DD') 
0

可以使用二者結合起來的結果UNION

例子:

select col1, col2 
from table1 
where... 

UNION 

select col1, col2 
from table2 
where... 
0

依我之見,你沒有任何連接兩套(bf)之間的條件。因此請使用UNIONUNION ALLRefer here

2

如果您有要求經常在一起查詢這些表,那麼您可以考慮使用視圖。

create view alrt_platform_alrt_all as 
    select * from alrt_platform_alrt 
union all 
    select * from alrt_platform_alrt_hstry; 

這則允許您查詢數據,象這樣:

select 
    count(distinct recepient_id), 
    TO_CHAR(ACTN_TAKE_DATA_TM,'YYYY-MM-DD') as accDate 
from alrt_platform_alrt_all 
where appl_cd like 'EBP' 
    and alrt_rspns_from_client_id like 'BB' 
group by TO_CHAR(ACTN_TAKE_DATA_TM,'YYYY-MM-DD'); 
+0

這也是一個好主意,應該被原始海報考慮! – cairnz 2010-03-04 13:08:00