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

Somma cumulativa di SQL Server per gruppo

In SQL Server 2005, lo farei utilizzando una sottoquery correlata:

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;

Se vuoi effettivamente aggiungerlo a una tabella, devi modificare la tabella per aggiungere la colonna e quindi eseguire un aggiornamento. Se la tabella contiene inserimenti e aggiornamenti, sarà necessario aggiungere un trigger per mantenerla aggiornata. Farlo attraverso una query è decisamente più semplice.

In SQL Server 2012, puoi farlo usando la sintassi:

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;