J'ai une table (SQL Server 2005) de ce format:
id_dummy, date_registered, item_id, quantité, prix
et je veux ajouter une nouvelle colonne (cumulative) qui calcule les totaux cumulatifs de chaque commande item_id par date_registered comme indiqué:
dummy_id date_registered item_id quantity price cumulative
1 2013-07-01 100 10 34.5 10
2 2013-07-01 145 8 2.3 8
3 2013-07-11 100 20 34.5 30
4 2013-07-23 100 15 34.5 45
5 2013-07-24 145 10 34.5 18
Merci d'avance
Dans SQL Server 2005, je le ferais 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 l'ajouter à un tableau, vous devez modifier le tableau pour ajouter la colonne, puis effectuer une mise à jour. Si le tableau comporte des insertions et des mises à jour, vous devrez ajouter un déclencheur pour le maintenir à jour. Il est certainement plus facile de passer à travers 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;