2013-01-07 39 views
3

我使用tsql來計算每週數據(開始日期是星期一)。 上週跨越了2012年和2013年的邊界,這意味着我每週得到兩筆錢。 有沒有辦法在tsql中對數據進行分組,所以我得到一個2012-12-31到2013-01-06的每週總和?如何按周劃分TSQL

實施例的數據和SQL: http://sqlfiddle.com/#!6/52b25/13/0

下面沒有鏈接的例子。假設表格有一列,「創建」了日期時間類型。每週有多少行?我想獲得兩個結果行,一個是2012年的最後一週,另一個是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) 

回答

5

一種解決方法是計算週數手動

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) 
+0

這對我的作品。這些星期被標記爲他們的第一天,所以不需要一週的數字。謝謝! –