我正在尝试计算剩余余额并将其存储在表中的记录中。但这很复杂,因为我需要把它放在table上。下面是一个解释:
科目表
╔═════════╦═══════╗
║ Account ║ Total ║
╠═════════╬═══════╣
║ A ║ $1000 ║
╠═════════╬═══════╣
║ B ║ $800 ║
╠═════════╬═══════╣
║ C ║ $1200 ║
╚═════════╩═══════╝
明细表
╔═════════╦══════╦══════╦═════════╗
║ Account ║ Line ║ Type ║ Amount ║
╠═════════╬══════╬══════╬═════════╣
║ A ║ 001 ║ E ║ $200.00 ║
╠═════════╬══════╬══════╬═════════╣
║ A ║ 002 ║ E ║ $300.00 ║
╠═════════╬══════╬══════╬═════════╣
║ A ║ 003 ║ E ║ $100.00 ║
╠═════════╬══════╬══════╬═════════╣
║ A ║ 004 ║ R ║ ║
╠═════════╬══════╬══════╬═════════╣
║ B ║ 001 ║ E ║ $300.00 ║
╠═════════╬══════╬══════╬═════════╣
║ B ║ 002 ║ R ║ ║
╠═════════╬══════╬══════╬═════════╣
║ C ║ 001 ║ R ║ ║
╚═════════╩══════╩══════╩═════════╝
我要做的是将与每个账户匹配的所有金额相加,找出该金额与该账户总额之间的差额,然后将剩余余额记录在“金额”列中,其中“类型”列=r。
因此,例如,帐户a的类型r行将填充$400.00,即($1000.00-($300.00+200.00+100.00))。
所以我的结果是:
╔═════════╦══════╦══════╦══════════╗
║ Account ║ Line ║ Type ║ Amount ║
╠═════════╬══════╬══════╬══════════╣
║ A ║ 001 ║ E ║ $200.00 ║
╠═════════╬══════╬══════╬══════════╣
║ A ║ 002 ║ E ║ $300.00 ║
╠═════════╬══════╬══════╬══════════╣
║ A ║ 003 ║ E ║ $100.00 ║
╠═════════╬══════╬══════╬══════════╣
║ A ║ 004 ║ R ║ $400.00 ║
╠═════════╬══════╬══════╬══════════╣
║ B ║ 001 ║ E ║ $300.00 ║
╠═════════╬══════╬══════╬══════════╣
║ B ║ 002 ║ R ║ $500.00 ║
╠═════════╬══════╬══════╬══════════╣
║ C ║ 001 ║ R ║ $1200.00 ║
╚═════════╩══════╩══════╩══════════╝
我现在就在这里。这不起作用,并且在更新我正在读取的同一个表时抛出了一个错误,更不用说我甚至不确定我是否正确地处理了这个问题:
UPDATE Detail_Table
INNER JOIN Accounts_Table
ON Detail_Table.Account = Accounts_Table.Account
SET
Detail_Table.Amount = Accounts_Table.Total - (SELECT SUM(Amount) FROM Detail_Table AS TempTable WHERE TempTable.Account = Accounts_Table.Account)
WHERE
Detail_Table.Type = 'R'
AND
Detail_Table.Amount IS NULL;
感谢您的帮助!
1条答案
按热度按时间cpjpxq1n1#
执行计算的查询是:
有了这个,就加入其中: