3

我使用 tsql 来汇总每周数据(开始日期是星期一)。上周跨越了 2012 年和 2013 年的边界,这意味着我每周得到两个总和。有没有办法在 tsql 中对数据进行分组,以便我每周获得 2012-12-31 到 2013-01-06 的总和?

示例数据和 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)
4

1 回答 1

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)
于 2013-01-07T19:17:12.000 回答