我有以下情况:我有属于许多投资的事务列表。交易记录包含投资标识符,日期和总金额,但不包含运行余额。SQL - 一次根据多个实体的先前行值计算行值
交易表:
+------------+------------+--------+
| Investment | Date | Gross |
+------------+------------+--------+
| A | 2015-01-01 | +200 |
| B | 2015-06-30 | +500 |
| C | 2016-01-10 | +300 |
| A | 2016-08-15 | +100 |
| A | 2016-09-21 | -300 |
+------------+------------+--------+
平衡被保存在一个单独的表,并且始终是最新的:
资产负债表:
+------------+------------+
| Investment | Balance |
+------------+------------+
| A | 0 |
| B | 500 |
| C | 300 |
+------------+------------+
我想什么要做的是获得每笔交易的运行余额一次只能点。
因此,举例来说,如果我想从2016年1月1日展示交易,以2016年8月31日为投资A,B和C,与正在运行的平衡,我会得到这样的:
结果:
+------------+------------+--------+-------------+
| Investment | Date | Gross | End Balance |
+------------+------------+--------+-------------+
| C | 2016-01-10 | 300 | 300 |
| A | 2016-08-15 | 100 | 300 |
+------------+------------+--------+-------------+
我想这样做没有迭代器,因为我认为它效率低下。此外,使用余额表并从当前余额向后工作将是理想的,因为投资可能有许多交易,而我通常只需要显示一些交易,而且通常需要显示较少的交易。
非常感谢您的帮助。
结果您是如何得到A的最终余额的? – Kostya
@Kostya我没有当前余额减去所有交易的总价值:所以,0 - ( - 300)= 300 – KJY