sql >> Databáze >  >> RDS >> PostgreSQL

jak vypočítat zůstatky v účetním softwaru pomocí postgres window funkce

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

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

Zvažte změnu názvů sloupců „In“ / „Out“, abyste je nemuseli dávat do uvozovek. (Jsou to vyhrazená slova)

Pokud jste chtěli pouze jednoho zákazníka (customer_id =2):

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

Pokud by se váš dotaz týkal více zákazníků a chtěli jste průběžný zůstatek, který RESTARTUJE u každého zákazníka, můžete použít:

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. Zkontrolujte, zda tabulka MySQL existuje bez použití syntaxe select from?

  2. Přehled různých metod skenování v PostgreSQL

  3. Jak funguje funkce OCT() v MySQL

  4. Jak extrahovat podřetězec z řetězce v PostgreSQL/MySQL