2013-02-23 36 views
5

我有兩個表A和B. A有兩列:id,金額。 B還有兩列:id,金額。 我希望結合A和B來創建一個新的表C,它有兩列:id,amount。我怎樣才能使用SQL? 例如:如何將兩張表合併成同一列?

A 
    ('A1',1) 
    ('A2',5) 
    ('A3',2) 
    ('A4',5) 
    ('A5',2) 
    ('A6',7) 
B 
    ('A1',3) 
    ('A3',2) 
    ('A4',7) 
    ('A5',4) 
    ('A8',2) 
    ('A9',10) 

所以C應該是:

C 
    ('A1',4) 
    ('A2',5) 
    ('A3',4) 
    ('A4',12) 
    ('A5',6) 
    ('A6',7) 
    ('A8',2) 
    ('A9',10) 

謝謝!

回答

7
SELECT ID, SUM(Amount) total 
FROM 
     (
      SELECT ID, Amount FROM A 
      UNION ALL 
      SELECT ID, AMount FROM B 
     ) s 
GROUP BY ID 

您可以創建從查詢結果的表的基礎。

CREATE TABLE C 
AS 
SELECT ID, SUM(Amount) total 
FROM 
     (
      SELECT ID, Amount FROM A 
      UNION ALL 
      SELECT ID, AMount FROM B 
     ) s 
GROUP BY ID; 
+1

+1您還可以添加CREATE TABLE c LIKE a :),但我不確定Oracle是否具有該功能。 – 2013-02-23 09:17:33

+0

謝謝!另一個問題(對不起,我是新來的sql),如果A和B只是選擇結果,我該如何實現呢?我的意思是,A不是真正的表格,我使用SELECT FROM WHERE獲得A ...我是否需要創建視圖或其他內容?謝謝! – lkkeepmoving 2013-02-23 09:21:46

+0

@lkkeepmoving是的,你可以創建一個視圖,但如果你不想這樣做,你也可以在子查詢中使用該查詢,例如'SELECT ID,Amount FROM(...在這裏添加查詢...)newTB ' – 2013-02-23 09:23:46

0

上述答案的作品精絕。只需要添加一個order by子句即可按ID排序。

SELECT ID, SUM(Amount) as total 
FROM 
     (
      SELECT ID, Amount FROM A 
      UNION ALL 
      SELECT ID, AMount FROM B 
     ) s 
GROUP by ID 
order by ID 
相關問題