3

tsqlを使用して毎週のデータを合計します(開始日は月曜日です)。先週は2012年と2013年の境界を越えました。つまり、週に2回の合計が得られます。tsql内でデータをグループ化して、2012-12-31から2013-01-06までの1週間の合計を取得する方法はありますか?

データとSQLの例: http ://sqlfiddle.com/#!6 / 52b25 / 13/0

以下のリンク例はありません。架空のテーブルには、日時タイプの「作成済み」という1つの列があります。毎週何行ですか?2つの結果行を取得したいと思います。1つは2012年の最後の堅実な週のもので、もう1つは2013年が始まる週(2012年12月31日月曜日に始まる)のものです。

select 
min(created) as 'First Date',
count(*) as 'Count',
datepart(wk,created) as 'Week Number'
from items
group by  datepart(wk,created), datepart(yy,created)
order by min(created)
4

1 に答える 1

5

1 つの回避策は、週番号を手動で計算することです

select 
min(created) as 'First Date',
count(*) as 'Count',
 datediff(dd,'2012-01-02',created)/7 AS week_number
from items
group by  datediff(dd,'2012-01-02',created)/7  -- You may replace '2012-01-02' to any date that is Monday (start day of the week)
order by min(created)
于 2013-01-07T19:17:12.000 に答える