基于日期范围的多个计数行(访问数据库)

时间:2011-01-05 17:10:50

标签: database ms-access count

我可以从指定的日期范围获得一个计数行,如下所示:

SELECT table.[EVENT NAME], Count(*) AS [Count]
FROM table
WHERE [EVENT]='alphabetical' And table.DATE>=#11/20/2010# And (table.DATE)<=#11/26/2010#
GROUP BY table.[EVENT NAME];

但是如何添加具有不同日期范围的多行?

[EVENT NAME],[DATE 11/20-11/26],[DATE 11/27-12/3], etc...


修改

数据看起来像这样

event1;1/11/2010
event1;1/11/2010
event2;1/11/2010
event2;1/11/2010
event2;1/11/2010
event3;1/11/2010
event1;1/12/2010
event1;1/12/2010
event2;1/12/2010
event2;1/12/2010
event4;1/12/2010
event4;1/12/2010

并且想要这样的东西(最好有更多列):

event1;2;2
event2;3;2
event3;1;0
event4;0;2

1 个答案:

答案 0 :(得分:2)

您可以按日期使用group by子句和分组。

您没有提供包含预期结果的示例记录,这有助于我们帮助您:)。 换句话说发布更多信息.. 但据我所知,你需要根据日期范围进行统计。

所以,如果您有2010年1月1日的10行 和1/2/2010有20个引用的行 和1/3/2010有6个参考行......你想要这样的输出:

1/1/2010 10

1/2/2010 20

1/3/2010 6

所以SELECT COUNT(*), MyDate FROM MyTable GROUP BY MyDate

要回答有关日期范围的问题,请考虑如何按组工作,通过组合符合条件的所有集合来对一组数据进行分组。因此,当您按日期分组时,它会按一个日期分组。您需要一个日期范围,因此每一行都应该了解或了解范围(从头到尾)。因此,您需要通过SQL生成每个行中的这些列。

修改

例如

SELECT Count(*), DATEADD(day, -10, GetDate()) AS StartDate, DATEADD(day, 10, GetDate()) AS EndDate FROM MyTable GROUP BY StartDate, EndDate

Access具有类似的功能,可以将日期添加到日期,因此请查看MS Access。然后只为每列生成一个开始和结束日期。