2017-07-14 73 views
0

這可能很簡單,但我無法弄清楚我該怎麼做。UNION ALL把戲ORACLE

所以我的代碼是這樣的

例如

SELECT id,total,total2 
FROM (select id, 0 AS total ,t1.total AS total2 
     FROM table1 t1 
     union ALL 
     select id, t2.total AS total, 0 AS total2 
     FRoM table2 t2) 

它顯示

id------total------totals 
001  0   20 
001  15   0 

我想表明這樣

id------total------totals 
001  15   20 

我該怎麼辦那?

謝謝你這麼多

+0

大概你可以解釋一下請求的上下文。您所希望的結果也可能來自表格之間的簡單連接(請參見[sqlfiddle](http://sqlfiddle.com/#!4/8b863/4)) – Insac

回答

4

做一個彙總算賬:

SELECT id, sum(total) as total, sum(total2) as total2 
FROM (select id, 0 AS total ,t1.total AS total2 
     FROM table1 t1 
     union ALL 
     select id, t2.total AS total, 0 AS total2 
     FRoM table2 t2 
    ) i 
GROUP BY id; 
1

相反傾銷0年代進入一些列作爲填料,可以使用WITH和子查詢的到的所有記錄檢索總和匹配Id的不同列表中的Id。

;WITH GetIds AS (
SELECT DISTINCT id 
FROM table1 
UNION 
SELECT DISTINCT id 
FROM table2 
) 
SELECT id, 
(SELECT SUM(total) FROM table1 t1 WHERE t1.id = ids.id) AS total1, 
(SELECT SUM(total) FROM table2 t2 WHERE t2.id = ids.id) AS total2 
FROM GetIds ids