PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

comment calculer les soldes dans un logiciel de comptabilité à l'aide de la fonction de fenêtre postgres

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

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

Envisagez de changer les noms de vos colonnes "In" / "Out" afin de ne pas avoir à les mettre entre guillemets. (Ce sont des mots réservés)

Si vous vouliez un seul client (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 votre requête devait couvrir plusieurs clients et que vous vouliez un solde courant qui REDÉMARRAIT avec chaque client, vous pourriez utiliser :

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