Sql server SQL按周日期分组

Sql server SQL按周日期分组,sql-server,group-by,Sql Server,Group By,我正在尝试将SQL Server中的订单列表按周日期分组。使用下面的SQL,我得到以下结果: SELECT cast(datepart(wk, created) [week], count(1) [number of orders] FROM Orders GROUP BY datepart(wk, created) Week - Number of Orders 15 - 305 16 - 285 17 - 428 我想做的不是显示周数,而是显示周开始日期 Week -

我正在尝试将SQL Server中的订单列表按周日期分组。使用下面的SQL,我得到以下结果:

SELECT cast(datepart(wk, created) [week], count(1) [number of orders]
FROM Orders
GROUP BY datepart(wk, created)

Week - Number of Orders
15   - 305
16   - 285
17   - 428
我想做的不是显示周数,而是显示周开始日期

Week -       Number of Orders
11/04/2016   - 305
18/04/2016   - 285
25/04/2016   - 428
有什么想法吗

SELECT  DATEADD(day, 1 - DATEPART(weekday, created), CAST(created AS DATE)),
        COUNT(*)
FROM    Orders
GROUP BY
        DATEADD(day, 1 - DATEPART(weekday, created), CAST(created AS DATE))

您可以使用
SET DATEFIRST

来控制一周的开始日期这给了我一个星期一

SELECT  DATEADD(Week, DATEDIFF(week, 0, created), 0) [week], 
        count(1) [number of orders]
FROM    Orders
GROUP BY DATEADD(Week, DATEDIFF(week, 0, created), 0)
如果上面给你星期一,这应该给你星期天

DATEADD(Week, DATEDIFF(week, 0, created), -1)

你的一周是从星期天开始还是从星期一开始?星期天开始,不过如果能在星期一看到答案也不错。为什么会有反对票?工作日是DAX函数,所以对我来说不起作用。TSQL中是否有类似的东西。我认为这很接近,但不完全正确。对我来说,这似乎是从周一开始的一周,但它计算了从周一前一天开始的7天期间发生的项目。嗯。@samthebrand根据我的记忆,这取决于您的
DateFirst
值设置为什么。