繁体   English   中英

每周分组,不包括星期日

[英]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) 

它将数据分组到星期六,即星期一至星期六,而不是星期一至星期日。 有人可以解释我所缺少的吗?

我无法更改数据库开始日期

样本数据为:

  • 2017年2月10日9.00
  • 2017/03/10 10.50
  • 2017年4月10日10.00
  • 2017年8月10日1.00

您可以按周编号分组:

 group by [id] , datepart(ISO_WEEK, [createddate])

ISO周从星期一开始。

一周的第一天取决于您的语言设置(默认值为us_english为7(星期日))。 并且SET DATEFIRSTDATEDIFF没有影响

您可以尝试使用此查询

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM