2013-03-05 70 views
-1

我有兩個表一個叫BANK_ACCOUNT其他Transaction_history結構是這樣的:的Oracle 11g SQL Sum函數

Bank_Account 
------------ 
BankID 
Balance 

Transaction_history 
------------ 
TransID 
BankID 
Value 

我需要將交易值添加到銀行賬戶的餘額,但有可能是Transaction_History中的每個賬戶都有超過一筆交易(例如,某人可以存入1000美元,然後在表中進一步下注500美元)。我如何編碼,以便500美元從正確的帳戶餘額中提取?我提供了一個示例來嘗試和澄清。

Account 1 has a balance of $5000 
Account 1 has $1000 deposited 
Account 1 has $500 withdrawn 
Account 1 current balance is $5500 

我當前的代碼不會從新平衡,但原來拿戒斷。

在此先感謝。

回答

1

做出如下假設

  • TRANSACTION_HISTORYVALUE列是積極的存款和陰性withdrawls
  • 要從TRANSACTION_HISTORY應用所有行的BANK_ACCOUNT
  • 電流平衡不是每個BankID存在於BANK_ACCOUNT表中的交易在TRANSACTION_HISTORY表中有交易

那麼你會想要一個相關的子查詢。喜歡的東西

UPDATE bank_account acct 
    SET balance = balance + (SELECT SUM(th.value) 
           FROM transaction_history th 
          WHERE th.bankID = acct.bankID) 
WHERE EXISTS(SELECT 1 
       FROM transaction_history th 
       WHERE th.bankID = acct.bankID) 
+0

嗨,那奇特的是工作,並更新了我的表,但我的道歉,我沒有明確怎麼做,我只是輸出(在腳本輸出對話框)正確的價值觀 - 而不實際更新中保存的數據數據庫(就像它是一個報告) – Hulaz 2013-03-06 00:12:00