2013-02-23 33 views
5

Tôi có hai bảng A và B. A có hai cột: id, số tiền. B cũng có hai cột: id, số lượng. Tôi hy vọng kết hợp A và B để tạo một bảng C mới, với cùng hai cột: id, số tiền. Làm thế nào tôi có thể làm điều đó bằng cách sử dụng SQL? Ví dụ:Làm thế nào để kết hợp hai bảng thành riêng này cùng cột?

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) 

do đó, C nên:

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

Cảm ơn bạn!

Trả lời

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

Bạn có thể tạo ra một cơ sở bảng trên kết quả từ truy vấn.

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 Bạn cũng có thể thêm CREATE TABLE c LIKE a :) mặc dù tôi không chắc liệu Oracle có tính năng đó hay không. –

+0

Cảm ơn bạn! Một câu hỏi khác (xin lỗi tôi mới đến sql), nếu A và B chỉ là kết quả lựa chọn, làm thế nào tôi có thể thực hiện điều này? Ý tôi là, A không phải là một cái bàn thực sự, tôi dùng SELECT FROM WHERE get A ... Tôi có cần tạo ra một cái nhìn hay gì đó không? Cảm ơn bạn! – lkkeepmoving

+0

@lkkeepmoving có bạn có thể tạo chế độ xem nhưng nếu bạn không muốn thực hiện, bạn cũng có thể sử dụng truy vấn đó trong truy vấn con, ví dụ: 'SELECT ID, Amount FROM (... add the query here ...) newTB ' –

0

câu trả lời trên hoạt động hoàn toàn tốt. Chỉ cần thêm vào nó một thứ tự theo mệnh đề sẽ sắp xếp theo 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 
Các vấn đề liên quan