Можете да използвате променлива за съхраняване на кумулативната сума:
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
Горната заявка предполага, че има само два типа ACTION_TYPE
стойности, а именно 'ADD'
и 'DEDUCT'
. Следователно, ако ACTION_TYPE
не е равно на 'ADD'
, тогава е равно на 'DEDUCT'
.