我在以下查询中按周对数据进行分组
select id,sum(quantity) ,dateadd(wk, datediff(wk,0, [createddate]), 0) from table1 where
createddate >= '2017-10-02' and createddate <= '2017-11-12'
and [id] = 111
group by [id] , dateadd(wk, datediff(wk,0, [createddate]), 0)
它将数据分组到周六,即周一至周六,而不是周一至周日。有人可以解释我错过的东西。
我无法更改数据库开始日
示例数据是:
答案 0 :(得分:0)
您可以按周编号分组:
group by [id] , datepart(ISO_WEEK, [createddate])
ISO周从星期一开始。
答案 1 :(得分:0)
一周的第一天基于您的语言设置(默认值为us_english为7(星期日))。 SET DATEFIRST 对 DATEDIFF
无效您可以尝试此查询
set DATEFIRST 1
select id,sum(quantity) ,dateadd(wk, datediff(wk,0, [createddate]), 0) from table1 where
createddate >= '2017-10-02' and createddate <= '2017-11-12'
and [id] = 111
group by [id] , dateadd(dd,(-1)*(datepart(dw,[createddate])-1),[createddate])
set DATEFIRST 7
<强>更新强>:
dateadd(dd,(-1)*(datepart(dw,[createddate])-1),[createddate])
它会将本周一作为原始查询返回。