2017-05-01 8 views
1

SQL Server 2014を使用しており、合計計算を実行する必要があります。私は次の表を持っています:2つの列名に基づいて合計が実行されています

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 

各製品の現在の稼働月合計を各州ごとに計算しようとしています。たとえば、FLの場合、靴は4/22で(72 +( - 65))= 7、次に7 +(1 +( - 2))= 6になります。サンダル、TXの場合と同じです。

これを達成するにはどうすればよいでしょうか?

答えて

2

あなたは累積和の窓関数でこれを行う:

select t.*, 
     sum(total_sold_or_returns) over (partition by state, product, year(date), month(date) 
             order by date) as cumulative_sum 
from t; 

partition bystateproductを取っている - だけでなく、月と。

+0

です。どうもありがとうございます。 – user7146708

0

まだコメントするのに十分な担当者はいませんが、PARTITIONでORDER BYを使用するウィンドウ関数を使用して合計を取得することを指摘しておきます。これは2012 +のみで動作します。私はあなたが2014年を使用していると言っていることは分かっていますが、ORDER BYがPARTITIONでどのように機能しているか分からなければ、以前の答えは分かりません。

関連する問題