Sie können eine Variable verwenden, um den kumulativen Betrag zu halten:
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
Die obige Abfrage geht davon aus, dass es nur zwei Arten von ACTION_TYPE
gibt Werte, nämlich 'ADD'
und 'DEDUCT'
. Wenn also ACTION_TYPE
ist nicht gleich 'ADD'
, dann ist es gleich 'DEDUCT'
.