2017-08-17 3 views
1

私は共通のフィールドを持つ3つのテーブルを持っています。テーブル3の各行のSUMをテーブル1の列とテーブル2の列から計算したいと思います。ただし、SUMは一致するIDフィールドに基づいている必要があります。PostgreSQLテーブル間の合計

これまでのところ私が持っている:

INSERT INTO table_3.cost_label 
SELECT table_1.col_2 + table_2.col_2 
FROM table_1, table_2; 

Table 1 
ID Value 
1  10 
2  20 
3  30 

Table 2 
ID Value 
1  20 
2  40 
3  60 

Table 3-Final Output 
ID Value 
1  30 
2  60 
3  90 

は、一般的なマッチングの場でこれをベースにする方法はありますか?

+0

私はあなたを取得する場合、右 - それは、一致するフィールドにすでにある - なし? –

+0

テーブル1とテーブル2の合計を計算し、テーブル3の現在のレコードの下に置くことは簡単ではありません。 – CamMuller

+0

いくつかのサンプルデータと欲しい結果を投稿してください。 –

答えて

0

参加条件が不足しています。

INSERT INTO table_3 (ID, cost_label) 
SELECT 
    table_1.ID, 
    table_1.col_2 + table_2.col_2 
FROM 
    table_1, 
    table_2 
WHERE 
    table_1.ID = table_2.ID; 

または明示的な方法:あなたはそれを非明示的な方法を行うことができます

INSERT INTO table_3 (ID, cost_label) 
SELECT 
    table_1.ID, 
    table_1.col_2 + table_2.col_2 
FROM 
    table_1 
    JOIN table_2 ON table_1.ID = table_2.ID; 
+0

応答@jcaronに感謝します。私はあなたのアプローチを試みましたが、テーブル1とテーブル2の間の合計の出力はまだテーブル3の対応するIDに結合しません。 – CamMuller

+0

新しい行を追加すると言っていますか?あなたは実際に何をしたいですか?既存の行のデータを更新しますか? – jcaron

+0

はい、表3の行は、表1と表2の合計の出力で更新する必要があります。表3への結合は共通IDフィールドに関連していなければなりません。私の最近のアプローチはINNER JOINでしたが、まだ成功していません。 – CamMuller

関連する問題