2014-02-28 55 views
0

我有兩個表都有一個名爲column_value的列,它包含一個數字值。現在我想要的是在每個表中爲兩個表中的column_value的值求和,然後使用我得到的每一行的總和更新第一個表中的同一列(column_value)。 例如我有表A和表B,他們都有一個列名稱AMOUNT更新表中的每一行

表A:

id  AMOUNT 
1  20 
2  30 

表B:

id  AMOUNT 
1  10 
2  25 

首先,我想要得到以下結果

id AMOUNT AMOUNT TOTALAMOUNT 
1 20  10  30 
2 30  25  55 

現在我想更新的每一行A表與TOTALAMOUNT對每個ID

,使得更新後的表A應該像

id AMOUNT 
1 30  
2 55 
+0

添加您的解決方案的試用 –

回答

0

選擇:

SELECT A.ID, 
     NVL(A.AMOUNT,0) A_AMOUNT , 
     NVL(B.AMOUNT,0) B_AMOUNT , 
     NVL(A.AMOUNT,0) + NVL(B.AMOUNT,0) AS TOTAL_AMOUNT 
FROM TABLEA A, TABLEB B 
WHERE A.ID = B.ID 

更新:

UPDATE TABLEA A 
SET A.AMOUNT = (SELECT NVL(A.AMOUNT,0) + NVL(B.AMOUNT,0) 
        FROM TABLEB B 
       WHERE A.ID = B.ID) 
+0

喜。 從命令行中的第109行開始時出錯: 錯誤報告: SQL錯誤:ORA-01427:單行子查詢返回多個行 01427. 00000 - 「單行子查詢返回多個行「 *原因: *行動: – user3365535

+0

我預料到這一點,當TableB中的一個以上的ID是爲表A中的一個ID存在 –

+0

哦是的,這是正確的,對於我的表B如果我有另一個ID thats獨特那麼我們如何修改上述查詢,假設我對錶B有b_id唯一性。 – user3365535

0

你應該使用左連接。例如:

Table_a 
id val 
1 10 
2 20 

Table_b 
id val 
1 20 
2 30 

update Table_a a left join Table_b b on a.id = b.id set a.val = (a.val+b.val); 

此操作後:

Table_a 
id val 
1 30 
2 50 
+0

嗨,我跟着同樣的查詢使用左連接,它說.. SQL錯誤:ORA-00971:缺少SET k eyword 00971. 00000 - 「缺少SET關鍵字」 感謝您的時間。 – user3365535