sql >> Database >  >> RDS >> Sqlserver

SQL Server cumulatieve som per groep

In SQL Server 2005 zou ik dit doen met een gecorreleerde subquery:

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;

Als u dit daadwerkelijk aan een tabel wilt toevoegen, moet u de tabel wijzigen om de kolom toe te voegen en vervolgens een update uitvoeren. Als de tabel invoegingen en updates heeft, moet u een trigger toevoegen om deze up-to-date te houden. Het via een query krijgen is beslist gemakkelijker.

In SQL Server 2012 kunt u dit doen met behulp van de syntaxis:

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. Uitvoeren van ExecuteScalar() wanneer er geen resultaten worden geretourneerd

  2. Overzicht van DBCC SHRINKFILE-opdracht

  3. Waar kunt u de Runtime Kit voor Microsoft Access 2016 downloaden

  4. DEFAULT-waarde invoegen in een kolom wanneer een parameter NULL is