我正在开发一个应用程序,我将不得不存储一些银行帐户信息,包括每日帐户余额。
例如:
17/10/2014 - (+) - Starting/Initial balance - 5,000.00
17/10/2014 - (=) - Balance - 5,000.00
-
18/10/2014 - (-) - Payment - (1,000.00)
18/10/2014 - (=) - Balance - 4,000.00
-
19/10/2014 - (=) - Balance - 4,000.00
-
20/10/2014 - (-) - Payment - (1,000.00)
20/10/2014 - (=) - Balance - 3,000.00
我想我可以创建一个特定的“账户余额”表,在那里我可以存储每天的每个账户余额。
如果我错了,你能帮我找到最好的方法吗?但是,如果我是对的,我如何使数据库计算每日余额,特别是,当用户开始编辑旧值时,如何使数据库更新余额?
我所说的“旧价值观”是指:
1-这就是“帐户A”语句的样子:
18/10/2014 - (+) - Starting/Initial balance - 5,000.00
18/10/2014 - (=) - Balance - 5,000.00
-
19/10/2014 - (=) - Balance - 5,000.00
-
20/10/2014 - (=) - Balance - 5,000.00
2-但是用户忘记注册收入,所以他添加了新收入(所以现在必须更新余额):
18/10/2014 - (+) - Starting/Initial balance - 5,000.00
18/10/2014 - (+) - Sales commission - 2,500.00 <- USER ADDED THIS.
18/10/2014 - (=) - Balance - 7,500.00 <- THIS BALANCE HAS BEEN UPDATED.
-
19/10/2014 - (=) - Balance - 7,500.00 <- THIS BALANCE HAS BEEN UPDATED.
-
20/10/2014 - (=) - Balance - 7,500.00 <- THIS BALANCE HAS BEEN UPDATED.
最佳答案
不要存储余额,而是要有一个只为每个用户存储事务的表。
例如:
Date Transactions Comment
17/10/2014 +5,000.00 Starting/Initial balance -
18/10/2014 -1,000.00 Payment
20/10/2014 -1,000.00 Payment
然后您可以创建一个平衡视图(类似于):
create view balance as
select userId, sum(transactions) as balance from TransactionTable group by userId
如果你想更精确地包括开始和结束日期(即:为了能够在任何时间点获得平衡),你可以创建一个parametrized view(没有尝试过使用日期,但我认为它也会工作)。
关于mysql - 帐户余额:如何在SQL上正确计算,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26477659/