2016-12-20 8 views
1

私のテーブル(マーケット)にはセールスマン、セールス、週の3つの列があります。私はMTD(合計月)を合計することができるようにしたい。私の場合、11-18-2016から12-18-2016までのテーブルのデータを提供したいと考えています。テーブルのMTD列をどのように定式化するのか分かりません。いかなる援助も感謝します。MTDの合計を表示

select * from Market: 

Salesman    Sales     Week 
Joe     40      12-18-2016 
Mike     27      12-11-2016 
Todd     29      12-04-2016 
Robert    44      11-27-2016 
Tony     15      11-20-2016 
Morgan    60      11-13-2016 
Edwin     25      11-06-2016 
Josh     19      10-30-2016 
Travis    24      10-23-2016 
Wade     35      10-16-2016      

私が必要との結果:

Select Salesman, Sales as 'This Week', (some formula) as 'MTD' from Market 
where Week = '12-18-2016' 

Salesman    This Week     MTD 
Joe     40      40 
Mike     0      27 
Todd     0      29 
Robert     0      44 
Tony     0      15 
+0

誰もこれを進めていますか? –

答えて

2

あなたは、この使用してウィンドウ関数を行うことができます。 1週間のために、これを行う必要があります。

select m.* 
from (Select Salesman, Sales as "This Week", 
      sum(Sales) over (partition by SalesMan, date_trunc('month', week) 
           order by week) as MTD 
     from Market m 
    ) m 
where Week = '2016-12-18'; -- assumes that the date is stored in a native date/time format 

order byover節では、唯一、最新の週ではありません週間をサポートするために必要とされます。

+0

エラーは返されませんが、空のフィールドが返されます。 @PLearner。 –

+0

。 。これは、 'week'が日付/時刻の列(すなわち、文字列として格納されていない)であると仮定します。 –

関連する問題