2013-02-23 13 views
5

私は2つのテーブルAとBを持っています。Aにはid、amountの2つのカラムがあります。 Bにはid、amountの2つの列もあります。 私はAとBを組み合わせて、id、amountという同じ2つの列を持つ新しいテーブルCを作成したいと考えています。 SQLを使ってどうすればいいですか?たとえば :この2つのテーブルをどのように組み合わせて同じ列にするのですか?

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 Oracleにその機能があるかどうかわかりませんが、CREATE TABLE c LIKE a :)を追加することもできます。 –

+0

ありがとう!別の質問(申し訳ありませんが、私はSQLに新しいです)、AとBが選択結果だけの場合、どうすれば実装できますか?私は、Aは実際のテーブルではない、私はどこからSELECTを使用する...私はビューまたは何かを作成する必要がありますか?ありがとうございました! – lkkeepmoving

+0

@lkkeepmovingはいビューを作成することはできますが、実行したくない場合は、サブクエリでそのクエリを使用することもできます。たとえば、SELECT ID、Amount FROM(...ここにクエリを追加...)newTB ' –

0

上記の答えは絶対に正常に動作します。 IDでソートするorder by節を追加するだけです。

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 
関連する問題