K udržení kumulativní částky můžete použít proměnnou:
SELECT ID,
@s := IF(ACTION_TYPE='ADD', @s + ACTION_QTY, @s - ACTION_QTY) AS BALANCE,
ACTION_QTY,
ACTION_TYPE
FROM tableA
CROSS JOIN (SELECT @s := 0) AS var
ORDER BY ID
Výše uvedený dotaz předpokládá, že existují pouze dva typy ACTION_TYPE
hodnoty, konkrétně 'ADD'
a 'DEDUCT'
. Pokud tedy ACTION_TYPE
se nerovná 'ADD'
, pak se rovná 'DEDUCT'
.