Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Somme cumulée SQL Server par groupe

Dans SQL Server 2005, je ferais cela en utilisant une sous-requête corrélée :

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;

Si vous souhaitez réellement ajouter ceci dans une table, vous devez modifier la table pour ajouter la colonne, puis effectuer une mise à jour. Si la table contient des insertions et des mises à jour, vous devrez ajouter un déclencheur pour la maintenir à jour. Il est certainement plus facile de le faire passer par une requête.

Dans SQL Server 2012, vous pouvez le faire en utilisant la 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;