select t.*, sum("In"-"Out") over(order by id) as balance
from tbl t
order by id
Skrzypce: http://sqlfiddle.com/#!15/97dc5/2/0
Rozważ zmianę nazw kolumn „In” / „Out”, aby nie trzeba było ich umieszczać w cudzysłowie. (Są słowami zastrzeżonymi)
Jeśli chciałbyś tylko jednego klienta (customer_id =2):
select t.*, sum("In"-"Out") over(order by id) as balance
from tbl t
where customer_id = 2
order by id
Jeśli Twoje zapytanie miałoby obejmować wielu klientów i chciałbyś, aby saldo bieżące było URUCHAMIANE OD PONOWNIE z każdym klientem, możesz użyć:
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