我有一个包含报告及其创建日期/时间的表。我想要创建一个图表来计算在两个时间段内间隔10分钟创建的报告数量:8:00 AM-9:00AM和1:00 PM-2:00PM。从访问中的日期时间字段中选择时间范围
这是我想运行一个查询的例子:
SELECT
s.StudyStartDateTime AS "8:00 - 8:10",
s.StudyStartDateTime AS "8:10 - 8:20",
s.StudyStartDateTime AS "8:20 - 8:30",
s.StudyStartDateTime AS "8:30 - 8:40",
s.StudyStartDateTime AS "8:40 - 8:50",
s.StudyStartDateTime AS "8:50 - 9:00",
s.StudyStartDateTime AS "1:00 - 1:10",
s.StudyStartDateTime AS "1:10 - 1:20",
s.StudyStartDateTime AS "1:20 - 1:30",
s.StudyStartDateTime AS "1:30 - 1:40",
s.StudyStartDateTime AS "1:40 - 1:50",
s.StudyStartDateTime AS "1:50 - 2:00"
FROM
dbo_Study_ViewX211_Rpt AS s
WHERE FORMAT("8:00 - 8:10", 'hh:mm:ss') BETWEEN "08:00:00" AND "08:09:59"
AND FORMAT("8:10 - 8:20", 'hh:mm:ss') BETWEEN "08:10:00" AND "08:19:59"
AND FORMAT("8:20 - 8:30", 'hh:mm:ss') BETWEEN "08:20:00" AND "08:29:59"
AND FORMAT("8:30 - 8:40", 'hh:mm:ss') BETWEEN "08:30:00" AND "08:39:59"
AND FORMAT("8:40 - 8:50", 'hh:mm:ss') BETWEEN "08:40:00" AND "08:49:59"
AND FORMAT("8:50 - 9:00", 'hh:mm:ss') BETWEEN "08:50:00" AND "08:59:59"
AND FORMAT("1:00 - 1:10", 'hh:mm:ss') BETWEEN "01:00:00" AND "01:09:59"
AND FORMAT("1:10 - 1:20", 'hh:mm:ss') BETWEEN "01:10:00" AND "01:19:59"
AND FORMAT("1:20 - 1:30", 'hh:mm:ss') BETWEEN "01:20:00" AND "01:29:59"
AND FORMAT("1:30 - 1:40", 'hh:mm:ss') BETWEEN "01:30:00" AND "01:39:59"
AND FORMAT("1:40 - 1:50", 'hh:mm:ss') BETWEEN "01:40:00" AND "01:49:59"
AND FORMAT("1:50 - 2:00", 'hh:mm:ss') BETWEEN "01:50:00" AND "01:59:59"
遗憾的是,似乎访问不能告诉现场,我想格式中的格式化功能是指到查询中相同名称的字段。在上面的例子中,我认为这是因为Access将它视为字符串文字。但是,这不起作用,或者:
SELECT
s.StudyStartDateTime AS first
FROM
dbo_Study_ViewX211_Rpt AS s
WHERE FORMAT(first, 'hh:mm:ss') BETWEEN "08:00:00" AND "08:09:59"
访问提示我输入'first'的值。
我觉得我会以这种错误的方式开始。任何人都可以将我指向正确的方向吗?我通过ODBC使用Jet引擎,但实际上数据存储在SQL Server 2005中,所以如果有必要,我想我可以编写一个传递查询。不过,理想情况下,我希望它能在Access中工作。
编辑:
需要明确的是,在下列情况工作:
SELECT s.StudyStartDateTime AS first
FROM dbo_Study_ViewX211_Rpt AS s
WHERE FORMAT(StudyStartDateTime,'hh:mm:ss') Between "08:00:00" And "08:09:59";
然而,这并不让我多次选择多个条件下,相同的字段。
在http://office.microsoft.com/en-us/access/HA012288391033.aspx#examples第一个例子表明,包裹在方括号字段的别名是引用一个记录源的正确方法,但下面仍导致提示输入的值“第一”:
SELECT s.StudyStartDateTime AS first
FROM dbo_Study_ViewX211_Rpt AS s
WHERE FORMAT([first],'hh:mm:ss') Between "08:00:00" And "08:09:59";
编辑II:
的StudyStartDateTime的几个记录的内容的一个例子:
29/11/2007 8:06:00 AM
30/11/2007 8:09:01 AM
05/12/2007 8:06:51 AM
06/12/2007 8:07:21 AM
访问认为这网络作为“日期/时间”数据类型。
我的最终目标是绘制每个区间的计数。我认为这样做的最简单方法是简单地选择每个日期/时间作为不同的别名。例如:
8:00-8:10 8:10-8:20 8:20:8:30 ...
=======================================
8:01
8:03
8:15
8:23
8:28
8:28
...
你看过PARTITION()吗? – 2009-09-03 01:44:49