2017-08-17 46 views
1

我有三個表,每個都有一個公共字段。我想從表1中的列和表2中的列中計算表3中每行的SUM。然而,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