【问题标题】:Group by Week number starting monday从星期一开始按周数分组
【发布时间】:2016-07-28 21:50:42
【问题描述】:

从星期一开始按周数分组

工作日创建表
(
StartDate 日期时间 NOT NULL
, CountValue INT NOT NULL
);

插入工作日 (StartDate , CountValue ) 值
('2015-04-01', 4),
('2015-04-02', 1),
('2015-04-07', 2),
('2015-04-08', 8),
('2015-04-09', 3),
('2015-04-15', 2),
('2015-04-16', 6);

SELECT DATEPART(wk, StartDate ) weekno
, SUM(CountValue ) 总值
从工作日开始
按日期分组(周,开始日期)

2015 年 4 月 4 日至 2015 年 4 月 10 日,每周一 14

将比较 2015 年和 2016 年的总数

【问题讨论】:

  • SQL Server 在以英语 (technet.microsoft.com/en-us/library/…) 配置时默认为周日至周六周。所以对于 2,4 月 10 日是第 16 周,4 月 3 日到 4 月 9 日是第 15 周。
  • 我真的不喜欢使用 datepart 几个星期。我更喜欢从 startdate 开始的几周内的 datediff(startdate 日期是我需要的任何一天)。

标签: sql sql-server sql-server-2008


【解决方案1】:

你想要的解决方案可能是错误的

您是否排除了落在周末的那一天,或者您想包括所有 7 天

您是否在两个查询中都考虑过 ISO_week 而不是 week

请浏览下面的博客,它可能会给你和想法,因为如果你使用 datediff 函数,它并没有那么复杂

http://dotnetblue.blogspot.in/2013/10/calculate-difference-between-two-dates.html

【讨论】:

  • 抱歉一周应该从星期一开始,即需要周一周 14 - 2015 年 4 月 4 日 - 2015 年 4 月 10 日的总数
猜你喜欢
  • 1970-01-01
  • 2017-01-11
  • 2018-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多