Access 2007中三个时间段内每个电话总数的计数

时间:2013-10-04 18:26:54

标签: sql ms-access ms-access-2007 union

我是一个菜鸟,通常会解构其他SQL程序,以便更好地帮助我理解Access编程。

我有一个表(表1),除了其他基本信息之外,它还记录了接收呼叫的日期和时间。我们的办公时间是下午4:30到晚上8:30。

我想学习的是如何在报告上打印出下午4:30到6:29,6:30和8:29,8:30和10之间的通话次数(次数): 30。

报告底部应如下所示:

每班次电话数

通话次数:4:30至6:29(n)
通话次数:6:30~8:29(n) 通话时间:8:30-10:30(n)

我不断收到有关SELECT

中保留字的错误消息

5 个答案:

答案 0 :(得分:1)

可能你没有正确引用它就使用了“Count”这个词。正如showdev所说,我们需要看看你做了什么来帮助你知道你做错了什么。

答案 1 :(得分:1)

SELECT "4:30 PM TO 6:29 PM" AS TimeCalc, Count(Q.Call_ID) AS TotalCalls
FROM Table1 AS Q
WHERE Q.Call_Time >=#4:30 PM#
AND Q.Call_Time <=#6:29 PM#
UNION
SELECT "6:30 PM TO 8:29 PM" AS TimeCalc, Count(Q.Call_ID) AS TotalCalls
FROM Table1 AS Q
WHERE Q.Call_Time >=#6:30 PM#
AND Q.Call_Time <=#8:29 PM#
UNION
SELECT "8:30 PM TO 10:30 PM" AS TimeCalc, Count(Q.Call_ID) AS TotalCalls
FROM Table1 AS Q
WHERE Q.Call_Time >=#8:30 PM#
AND Q.Call_Time <=#10:30 PM#

只需将Call_IDCall_Time替换为您拥有的字段名称,并将YourTableName替换为表名。

以下是您应该看到的结果示例:

enter image description here

答案 2 :(得分:1)

你的想法有效。但是,您的方法仅使用我的表中的两个字段和查询。但是,当我尝试将您的查询统一(UNION)到我的查询时,我收到错误消息,因为两个查询都不包含相同数量的字段。

我离开了我的家用电脑,所以不幸的是我无法复制和放弃。粘贴查询SQL,但它基本上只是表格中的所有字段,标准为时间字段的{开始日期]和[结束日期]。

这些是我的表(表1)和查询中的字段:

日期,地点,传入/传出,时间,持续时间,满意度,评论 我尝试将它们添加到您的查询中,但Access不会接受它。

同样,我可能会忽视这一点非常简单。

我的报告设置为自动显示:根据输入的日期计数,传入和传出电话的每月计数,传入和传出分钟总数,每个位置的呼叫计数;以及其他计数。

我正在努力使报告自动将总电话分为三个部分:4:30到6:29,6:30到8:29,以及8:30到10:30,如果是这样的话帮助您了解我想要做的事情。

答案 3 :(得分:1)

PARAMETERS [Start Date] DateTime, [End Date] DateTime;
SELECT MSys_obj.Date, MSys_obj.Location,    MSys_obj[Incoming/Outgoing],MSys_obj.Duration,      
MSys_obj.Satisfaction, MSys_obj.A, MSys_obj.B, MSys_obj.C, MSys_obj.D, MSys_obj.E

FROM MSys_obj    WHERE(((MSys_obj.Date)在[开始日期]和[结束日期]之间));

And ...

SELECT "4:30 PM TO 6:29 PM" AS TimeCalc, Count(Q.Time) AS TotalCalls
FROM MSys_obj
WHERE Q.Time >=#4:30 PM#
AND Q.Time <=#6:29 PM#
UNION
SELECT "6:30 PM TO 8:29 PM" AS TimeCalc, Count(Q.Time) AS TotalCalls
FROM MSys_obj
WHERE Q.Time >=#6:30 PM#
AND Q.Time <=#8:30 PM#
UNION SELECT "8:30 PM TO 10:30 PM" AS TimeCalc, Count(Q.Time) AS TotalCalls
FROM MSys_obj
WHERE Q.Time>= #8:30 PM#
AND Q.Time <=#10:30 PM#;

答案 4 :(得分:1)

我在理解如何使用本网站时遇到很多问题。

好的,让我们再试一次发布这个问题。

以下是我在报告中尝试使用的两个查询:

PARAMETERS [Start Date] DateTime, [End Date] DateTime;
SELECT MSys_obj.Date, MSys_obj.Location, MSys_obj.[Incoming/Outgoing],   
MSys_obj.Duration, MSys_obj.Satisfaction, MSys_obj.A, MSys_obj.B, MSys_obj.C,  
MSys_obj.D, MSys_obj.E
FROM MSys_obj
WHERE (((MSys_obj.Date) Between [Start Date] And [End Date]));

SELECT "4:30 PM TO 6:29 PM" AS TimeCalc, Count(Q.Date) AS TotalCalls
FROM MSys_obj
WHERE Q.Time >=#4:30 PM#
AND Q.Time <=#6:29 PM#
UNION
SELECT "6:30 PM TO 8:29 PM" AS TimeCalc, Count(Q.Date) AS TotalCalls
FROM MSys_obj
WHERE Q.Time >=#6:30 PM#
AND Q.Time <=#8:30 PM#
UNION SELECT "8:30 PM TO 10:30 PM" AS TimeCalc, Count(Q.Date) AS TotalCalls
FROM MSys_obj
WHERE Q.Time>= #8:30 PM#
AND Q.Time <=#10:30 PM#;

这些是我的表格中的列,我必须隐藏在MSys_obj的名称下;这是一个很长的故事:

传入/传出,日期,工人,来电者,性别,时间,持续时间,位置,原因,A,B,C,D,E

当我尝试使用SQL合并两个查询时,我收到有关列数不匹配的错误。

此外,第二个查询没有从报告中给出正确的计数,它显示一个请求Q.Date和Q.Time的输入字段,这是我不想要的,然后显示三个不同的段0每个计数。

我再一次尝试获取原始报告,以便另外显示分为三个连续时间范围的呼叫计数。

所有人都应该做的事情是在显示的两个框中输入所需的日期范围,一个用于开始日期,一个用于结束日期,报告将显示其所有数据,包括新添加的三个时间范围。