MySQL更改SUM值

时间:2012-08-07 09:12:22

标签: mysql sum

我正在尝试创建一个查询,其中SUM列,但是,如果列包含某个值,则必须在此时重置SUM值才能采用此值。

即:

SUM(i.units * op.add_or_subtract)   // This would translate to: '50 * -1' or '50 * 1'

我们的想法是,如果op.op_code = 9 SUM,则i.units值应重置为op_code | units | add_or_subtract | SUM value | --------|-------|-----------------|------------ 1 | 50 | 1 | 50 1 | 50 | 1 | 100 4 | 30 | -1 | 70 9 | 225 | 0 | 225 的当前值,因为已进行手动调整。

{{1}}

等等。

任何人都可以帮助我(如果可以的话)在MySQL中实现这一目标吗?

2 个答案:

答案 0 :(得分:1)

select *, case when op_code = 9
               then @s := units
               else (@s := @s + (units * add_or_subtract)) 
          end as sum
from your_table, (select @s := 0) st

答案 1 :(得分:0)

试试这个:

SELECT SUM(IF(op_code = 9, (@var_sum := units), 
                           ((@var_sum := @var_sum + units) * add_or_subtract) 
          ) as sum_value
FROM table_name, (SELECT @var_sum := 0) a;