Du kan bruge en variabel til at holde det kumulative beløb:
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
Ovenstående forespørgsel antager, at der kun er to typer ACTION_TYPE
værdier, nemlig 'ADD'
og 'DEDUCT'
. Derfor, hvis ACTION_TYPE
er ikke lig med 'ADD'
, så er det lig med 'DEDUCT'
.