Du kan använda en variabel för att hålla det ackumulerade beloppet:
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
Ovanstående fråga förutsätter att det bara finns två typer av ACTION_TYPE
värden, nämligen 'ADD'
och 'DEDUCT'
. Därför, om ACTION_TYPE
är inte lika med 'ADD'
, då är det lika med 'DEDUCT'
.