sum courante basée sur 2 noms de colonnes

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.