我有以下情況:我有屬於許多投資的事務列表。交易記錄包含投資標識符,日期和總金額,但不包含運行餘額。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