【发布时间】:2018-01-31 13:31:01
【问题描述】:
我有一个查询每天获取计数,其中 startdate 和 enddate 是从应用程序传递的参数,我在这里使用示例日期来演示查询
SELECT
CAST(DateCreated AS DATE) AS Date,
COUNT(0) AS Total
FROM
SessionTable
WHERE
DateCreated >= '10/02/2015'
AND CONVERT(DATE, DateCreated) <= '10/30/2015'
GROUP BY
CAST(DateCreated AS DATE)
ORDER BY
CAST(DateCreated AS DATE)
这将以格式返回结果
Date Total
现在我决定通过将按日期计数转换为按周计数来减少记录数,并使用查询
SELECT
DATEPART(wk, DateCreated) AS WeekNumber,
COUNT(0) AS WeekCount
FROM
SessionTable
WHERE
DateCreated >= '10/02/2015'
AND CONVERT(DATE, DateCreated) <= '10/30/2015'
GROUP BY
DATEPART(wk, DateCreated)
这会以格式返回结果并且工作正常
WeekNumber WeekCount
-------------------------
40 2298
41 13998
42 19454
43 19923
为了使结果集更加清晰,我计划将每周的开始日期和结束日期也添加到上述结果集中,但很难这样做
我的预期结果是
WeekNumber BeginDate EndDate WeekCount
要从这里获取 weekBegin 和 End Date How do you get the "week start date" and "week end date" from week number in SQL Server? 建议可以使用,我编写了这样的查询
SELECT
DATEPART(wk, DateCreated) AS WeekNumber,
DATEADD(dd, -(DATEPART(dw, DateCreated)-1), DateCreated) as [WeekStart],
DATEADD(dd, 7-(DATEPART(dw, DateCreated)), DateCreated) as [WeekEnd],
COUNT(0) AS WeekCount
FROM
Session
WHERE
DateCreated >= '10/02/2015'
AND CONVERT(DATE, DateCreated) <= '10/30/2015'
GROUP BY
DATEPART(wk, DateCreated),
DATEADD(dd, -(DATEPART(dw, DateCreated)-1), DateCreated),
DATEADD(dd, 7-(DATEPART(dw, DateCreated)), DateCreated)
但这返回了我的结果集,每天计数为 1,如下所示
WeekNumber WeekStart WeekEnd WeekCount
44 2015-10-25 18:02:26.527 2015-10-31 18:02:26.527 1
44 2015-10-25 10:53:16.057 2015-10-31 10:53:16.057 1
42 2015-10-11 11:23:57.253 2015-10-17 11:23:57.253 1
40 2015-09-27 09:04:39.063 2015-10-03 09:04:39.063 1
44 2015-10-25 10:44:38.573 2015-10-31 10:44:38.573 1
44 2015-10-25 14:33:31.803 2015-10-31 14:33:31.803 1
44 2015-10-25 08:18:28.020 2015-10-31 08:18:28.020 1
44 2015-10-25 12:19:21.270 2015-10-31 12:19:21.270 1
那么我怎样才能正确地将BeginDate 和EndDate 值添加到查询中的每一行?
【问题讨论】:
-
看这里,这个问题有几种解决方案:stackoverflow.com/questions/1267126/…
-
@Egbert 给定的线程有助于获得有关如何添加 StarDate 和 Enddate of week 的答案,但我正在努力将它们与计数查询集成,这就是我提出问题的原因
-
@Egbert 我已经用我现在面临的适当问题编辑了我的问题。因此,如果可能,请帮助删除重复状态
标签: sql sql-server