sql >> Databáze >  >> RDS >> Sqlserver

SQL Server Kumulativní součet podle skupiny

V SQL Server 2005 bych to udělal pomocí korelovaného poddotazu:

select dummy_id, date_registered, item_id, quantity, price,
       (select sum(quantity)
        from t t2
        where t2.item_id = t.item_id and
              t2.date_registered <= t.date_registered
       ) as cumulative
from table t;

Pokud to skutečně chcete přidat do tabulky, musíte upravit tabulku tak, aby přidala sloupec, a poté provést aktualizaci. Pokud tabulka obsahuje přílohy a aktualizace, budete muset přidat spouštěč, aby byla aktuální. Získání pomocí dotazu je rozhodně jednodušší.

V SQL Server 2012 to můžete provést pomocí syntaxe:

select dummy_id, date_registered, item_id, quantity, price,
       sum(quantity) over (partition by item_id order by date_registered) as cumulative
from table t;



  1. rozdělit řetězec do několika řad

  2. ORA-24550:signál přijat:chyba [si_signo=6]

  3. Překlad Microsoft T-SQL do Oracle SQL

  4. Efektivní převod dat mezi UTC a místním (tj. PST) časem v SQL 2005