如何将两个表组合成自己的相同列?

时间:2013-02-23 09:12:55

标签: sql database oracle

我有两个表A和B.A有两列:id,amount。 B还有两列:id,amount。 我希望结合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)

谢谢!

2 个答案:

答案 0 :(得分: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 :(得分: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