select t.*, sum("In"-"Out") over(order by id) as balance
from tbl t
order by id
Chơi đùa: http://sqlfiddle.com/#!15/97dc5/2/0
Cân nhắc thay đổi tên cột của bạn "Vào" / "Ra" để bạn không cần đặt chúng trong dấu ngoặc kép. (Chúng là những từ dành riêng)
Nếu bạn chỉ muốn một khách hàng (customer_id =2):
select t.*, sum("In"-"Out") over(order by id) as balance
from tbl t
where customer_id = 2
order by id
Nếu truy vấn của bạn dành cho nhiều khách hàng và bạn muốn có số dư đang hoạt động PHỤC HỒI với từng khách hàng, bạn có thể sử dụng:
select t.*, sum("In"-"Out") over( partition by customer_id
order by customer_id, id ) as balance_by_cust
from tbl t
order by customer_id, id