MySQL用重置条件计算累积和

时间:2015-08-07 19:36:47

标签: mysql

有没有办法在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列。这是一个小表,所以我不介意更新整个表以换取简单的东西。

1 个答案:

答案 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;