sql >> Base de Datos >  >> RDS >> PostgreSQL

cómo calcular saldos en un software de contabilidad usando la función de ventana de postgres

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

Violín: http://sqlfiddle.com/#!15/97dc5/2/0

Considere cambiar los nombres de sus columnas "In" / "Out" para que no necesite ponerlos entre comillas. (Son palabras reservadas)

Si desea solo un 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

Si su consulta abarcara varios clientes y quisiera un saldo actual que se REINICIARA con cada cliente, podría usar:

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