2013-03-05 109 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