sql >> Databasteknik >  >> RDS >> PostgreSQL

hur man beräknar saldon i ett bokföringsprogram med postgres fönsterfunktion

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

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

Överväg att ändra dina kolumnnamn "In" / "Out" så att du inte behöver sätta dem inom citattecken. (De är reserverade ord)

Om du bara ville ha en kund (customer_id =2):

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

Om din fråga skulle sträcka sig över flera kunder och du ville ha ett löpande saldo som STARTADE om med varje kund, kan du använda:

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



  1. Hur skapar man en temporär tabell i en Oracle-databas?

  2. Skillnad mellan MySQL JOIN vs LEFT JOIN

  3. alternativ till REPLACE på en text- eller ntext-datatyp

  4. SQL UPPDATERING Syntax – Listad av DBMS