Bạn có thể sử dụng một biến để giữ số tiền tích lũy:
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
Truy vấn trên giả định rằng chỉ có hai loại ACTION_TYPE
các giá trị, cụ thể là 'ADD'
và 'DEDUCT'
. Do đó, nếu ACTION_TYPE
không bằng 'ADD'
, thì nó bằng 'DEDUCT'
.