Sql server 在SQL Server中按给定的开始日期每周统计行数

Sql server 在SQL Server中按给定的开始日期每周统计行数,sql-server,Sql Server,我想选择每周每个订单的计数。从给定日期开始。给定以下来自SQL Server的这组数据。如何查询将显示周列表和相应的行/订单计数的信息 这是我想要的输出 您可以按日期部分(wk)分组。请看 可能是这样的: select DATEPART(yyyy,created_by_dt) as Year, DATEPART(wk, created_by_dt) as Week, count(*) as Count from X group by DATEPART(yyyy,created_by_dt),

我想选择每周每个订单的计数。从给定日期开始。给定以下来自SQL Server的这组数据。如何查询将显示周列表和相应的行/订单计数的信息

这是我想要的输出

您可以按日期部分(wk)分组。请看

可能是这样的:

select DATEPART(yyyy,created_by_dt) as Year, DATEPART(wk, created_by_dt) as Week, count(*) as Count from X 
group by DATEPART(yyyy,created_by_dt), DATEPART(wk, created_by_dt)
order by DATEPART(yyyy,created_by_dt), DATEPART(wk, created_by_dt)
以下脚本将为您提供更好的输出:

select 
-- Start of week from https://stackoverflow.com/questions/1267126/get-the-week-start-date-and-week-end-date-from-week-number-in-sql-server
-- by Tomalak
CONVERT(date, DATEADD(dd, 0 - (@@DATEFIRST + 5 + DATEPART(dw, created_by_dt)) % 7, created_by_dt)) AS Monday, 
count(*) as Count, 
MIN(created_by_dt) AS FirstRecordThisWeek, 
CONVERT(date,MIN(created_by_dt)) AS FirstRecordThisWeek_date
from X 
group by  CONVERT(date, DATEADD(dd, 0 - (@@DATEFIRST + 5 + DATEPART(dw, created_by_dt)) % 7, created_by_dt))
order by CONVERT(date, DATEADD(dd, 0 - (@@DATEFIRST + 5 + DATEPART(dw, created_by_dt)) % 7, created_by_dt))
输出(来自我的数据):


因此,这不是一个代码编写服务,您需要尝试一下,当您遇到困难时,请发布您的尝试,以便我们能够提供帮助。谢谢!这对我有用。我只是想澄清一下。“星期一”列显示每周的开始日期(即星期一)不是吗?
Monday      Count   FirstRecordThisWeek         FirstRecordThisWeek_date
2018-12-31  1       2019-01-03 05:11:30.570     2019-01-03
2019-03-11  1       2019-03-13 06:03:41.500     2019-03-13
2019-04-01  2       2019-04-04 01:16:34.440     2019-04-04
2019-04-15  21      2019-04-15 04:25:30.913     2019-04-15
2019-04-29  6       2019-04-30 06:52:26.057     2019-04-30
2019-05-06  3       2019-05-08 07:01:00.683     2019-05-08
2019-05-13  5       2019-05-16 22:58:43.610     2019-05-16