Ado*_*eau 3 t-sql group-by datepart
我使用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)
Run Code Online (Sandbox Code Playgroud)
一种解决方法是手动计算周数
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)
Run Code Online (Sandbox Code Playgroud)