PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

come calcolare i saldi in un software di contabilità utilizzando la funzione finestra di Postgres

select t.*, sum("In"-"Out") over(order by id) as balance
from tbl t
order by id

Violino: http://sqlfiddle.com/#!15/97dc5/2/0

Prendi in considerazione la possibilità di modificare i nomi delle colonne "In" / "Out" in modo da non doverli mettere tra virgolette. (Sono parole riservate)

Se volevi un solo cliente (customer_id =2):

select t.*, sum("In"-"Out") over(order by id) as balance
from tbl t
where customer_id = 2
order by id

Se la tua query dovesse riguardare più clienti e desideri un saldo corrente che RIPARTI con ogni cliente, potresti utilizzare:

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