2013-01-07 38 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

这对我的作品。这些星期被标记为他们的第一天,所以不需要一周的数字。谢谢! –