PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

como calcular saldos em um software de contabilidade usando a função de janela 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

Considere alterar os nomes das colunas "In" / "Out" para que você não precise colocá-los entre aspas. (São palavras reservadas)

Se você quisesse apenas um 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 sua consulta abranger vários clientes e você deseja um saldo em execução que REINICIA com cada cliente, você pode 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