J'utilise SQL Server 2014 et j'ai besoin d'un calcul cumulatif. J'ai le tableau suivant:
Date State Product Total Sold or Returns Transaction 22-Apr FL shoes 72 Sale 22-Apr FL sandals 3 Sale 22-Apr TX shoes 12 Sale 22-Apr TX sandals 5 Sale 23-Apr FL shoes 1 Sale 23-Apr FL sandals 48 Sale 23-Apr TX shoes 5 Sale 23-Apr TX sandals 23 Sale 22-Apr FL shoes -65 Returns 22-Apr FL sandals -4 Returns 22-Apr TX shoes -25 Returns 22-Apr TX sandals -8 Returns 23-Apr FL shoes -2 Returns 23-Apr FL sandals -51 Returns 23-Apr TX shoes -5 Returns 23-Apr TX sandals -3 Returns
J'essaie de calculer le total cumulé du mois à la date de chaque produit pour chaque état. Par exemple, pour FL, les chaussures seront (72 + (- 65)) = 7 pour 4/22 et ensuite 7 + (1 + (- 2)) = 6. Idem pour les sandales, et aussi pour TX.
Quel serait le meilleur moyen d'accomplir cela?
Vous faites cela avec une fonction de window de sum cumulative:
select t.*, sum(total_sold_or_returns) over (partition by state, product, year(date), month(date) order by date) as cumulative_sum from t;
La partition by
prend l' state
et le product
– et le mois aussi.
Pas assez de rep pour commenter encore, mais une chose à signaler est que pour get le total cumulé en utilisant une fonction de fenêtrage, vous utilisez ORDER BY dans la partition. Cela ne fonctionne qu'en 2012 +. Je sais que vous avez dit que vous utilisiez 2014, mais si vous ne saviez pas comment fonctionne ORDER BY dans la PARTITION, vous ne comprendriez pas vraiment la réponse précédente.