[英]Weekly Group by not including Sunday
我在以下查询中按周对数据进行分组
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)
它将数据分组到星期六,即星期一至星期六,而不是星期一至星期日。 有人可以解释我所缺少的吗?
我无法更改数据库开始日期
样本数据为:
您可以按周编号分组:
group by [id] , datepart(ISO_WEEK, [createddate])
ISO周从星期一开始。
一周的第一天取决于您的语言设置(默认值为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])
它将返回一周中的星期一作为您的原始查询。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.