sql >> Database teknologi >  >> RDS >> Sqlserver

SQL Server kumulativ sum efter gruppe

I SQL Server 2005 ville jeg gøre dette ved at bruge en korreleret underforespørgsel:

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;

Hvis du rent faktisk vil tilføje dette til en tabel, skal du ændre tabellen for at tilføje kolonnen og derefter foretage en opdatering. Hvis tabellen har inserts og opdateringer, skal du tilføje en trigger for at holde den opdateret. At få det gennem en forespørgsel er bestemt nemmere.

I SQL Server 2012 kan du gøre dette ved at bruge syntaksen:

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. opdele alfa og numerisk ved hjælp af sql

  2. Generer et sæt eller en sekvens uden sløjfer – del 1

  3. Trigram Wildcard String Search i SQL Server

  4. opdatering af kolonner med et sekvensnummer mysql