Anda dapat menggunakan variabel untuk menyimpan jumlah kumulatif:
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
Kueri di atas mengasumsikan bahwa hanya ada dua jenis ACTION_TYPE
nilai, yaitu 'ADD'
dan 'DEDUCT'
. Oleh karena itu, jika ACTION_TYPE
tidak sama dengan 'ADD'
, maka sama dengan 'DEDUCT'
.