有没有办法在mySQL中捕获具有重置条件的累计和?用例是一个简单的收银台
id transactionType value CurrentBalance
1 purchase 10 10
2 sale -10 0
3 RESET 20 20
4 purchase 10 30
5 sale -10 20
6 sale 10 30
7 sale -20 10
这里的答案是一个很好的起点,但我不知道如何扩展它: Create a Cumulative Sum Column in MySQL
SELECT t.id,
t.count,
@running_total := @running_total + t.value AS CurrentBalance
FROM TABLE t
JOIN (SELECT @running_total := 0) r
ORDER BY t.id
注意:基本上这个想法是每次重置命中时重置累积和。理想情况下,我正在尝试使用更新/插入触发器,它将考虑RESET更新整个CurrentBalance列。这是一个小表,所以我不介意更新整个表以换取简单的东西。
答案 0 :(得分:2)
所有这些都需要一些简单的条件逻辑:
SELECT t.id, t.count,
@running_total := if(transactionType = 'RESET', t.value,
@running_total + t.value
) as CurrentBalance
FROM TABLE t JOIN
(SELECT @running_total := 0) params
ORDER BY t.id;