我正在尝试创建一个查询,其中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中实现这一目标吗?
答案 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;