2013-03-07 124 views
0

我有兩種類型的sql查詢它返回相同的數據,我需要合併其中兩個,如果我使用聯合 它把第二個結果放在第一個結果但我不需要這個,我需要合併日期或者有沒有辦法將兩個SQL查詢合併到一個查詢中?如何合併兩個結果

SELECT TO_CHAR(s.CR_DATE, 'DD') DAY, TO_CHAR(s.CR_DATE, 'MM') MONTH, count(*) total FROM SUSR s 
left outer join SUSR_ACCT sa on (s.SUSR_ID = sa.SUSR_ID) 
WHERE s.CR_DATE > '01-01-2012' AND s.CR_DATE < '01-01-2014' and sa.ACCT_ID = 123 
GROUP BY TO_CHAR(s.CR_DATE, 'DD'), TO_CHAR(s.CR_DATE, 'MM') 



SELECT TO_CHAR(s.CR_DATE, 'DD') DAY, TO_CHAR(s.CR_DATE, 'MM') MONTH, count(*) total FROM SUSR s 
WHERE s.CR_DATE > '01-01-2012' AND s.CR_DATE < '01-01-2014' and s.APP_ACCT_ID = 123 
GROUP BY TO_CHAR(s.CR_DATE, 'DD'), TO_CHAR(s.CR_DATE, 'MM') 
ORDER BY month, day 

謝謝!

enter image description here

回答

3

你想要聚合兩個結果:

SELECT day, month, SUM(total) 
    FROM (/* first_query */ 
     UNION ALL 
     /* second_query */) 
GROUP BY day, month 
+0

謝謝你的作品! – Talha 2013-03-07 12:43:02

1

假設我正確理解你的併購戰略背後的意圖,你應該添加的GROUP BY第二水平,總量可達相應總計如下:

SELECT DAY, MONTH, SUM(total) FROM (
    SELECT TO_CHAR(s.CR_DATE, 'DD') DAY, TO_CHAR(s.CR_DATE, 'MM') MONTH, count(*) total 
    FROM SUSR s 
    left outer join SUSR_ACCT sa on (s.SUSR_ID = sa.SUSR_ID) 
    WHERE s.CR_DATE > '01-01-2012' AND s.CR_DATE < '01-01-2014' and sa.ACCT_ID = 123 
    GROUP BY TO_CHAR(s.CR_DATE, 'DD'), TO_CHAR(s.CR_DATE, 'MM') 
UNION ALL 
    SELECT TO_CHAR(s.CR_DATE, 'DD') DAY, TO_CHAR(s.CR_DATE, 'MM') MONTH, count(*) total 
    FROM SUSR s 
    WHERE s.CR_DATE > '01-01-2012' AND s.CR_DATE < '01-01-2014' and s.APP_ACCT_ID = 123 
    GROUP BY TO_CHAR(s.CR_DATE, 'DD'), TO_CHAR(s.CR_DATE, 'MM') 
) src 
GROUP BY DAY, MONTH 
ORDER BY DAY, MONTH 

如果在第一個結果中有一個1 2 5行,並且在第二行行中,您將在輸出中看到1 2 9行(即,前兩列將用於分組,最後一列將被累計)。

+0

謝謝你的工作! – Talha 2013-03-07 12:43:32