PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

So berechnen Sie Salden in einer Buchhaltungssoftware mit der Postgres-Fensterfunktion

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

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

Erwägen Sie, Ihre Spaltennamen "In" / "Out" zu ändern, damit Sie sie nicht in Anführungszeichen setzen müssen. (Sie sind reservierte Wörter)

Wenn Sie nur einen Kunden wollten (customer_id =2):

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

Wenn sich Ihre Abfrage über mehrere Kunden erstrecken würde und Sie einen laufenden Kontostand wünschen, der bei jedem Kunden NEU STARTET, könnten Sie Folgendes verwenden:

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