0

我是这方面的菜鸟,通常解构其他 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 中保留字的错误消息

4

5 回答 5

1

可能您在没有正确引用的情况下使用了“计数”这个词。正如 showdev 所说,我们需要看看你做了什么来帮助你知道你做错了什么。

于 2013-10-04T18:29:27.017 回答
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_IDandCall_Time替换为您拥有的字段名称并替换YourTableName为表名称即可。

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

在此处输入图像描述

于 2013-10-04T18:36:13.897 回答
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 .

再一次,我现在正试图获取原始报告,以另外显示分解为三个连续时间范围的调用计数。

提取报告所需要做的就是在出现的两个框中输入所需的日期范围,一个用于开始日期,一个用于结束日期,报告将显示所有数据,包括新添加的三个时间范围。

于 2013-10-18T02:13:43.203 回答
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#;
于 2013-10-12T01:02:24.250 回答
1

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

我不在家里的电脑上,所以很遗憾我无法复制和粘贴查询 SQL,但它基本上只是表上的所有字段,时间字段的条件为介于 {开始日期] 和 [结束日期] 之间。

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

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

同样,这可能是我忽略的非常简单的事情。

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

我正在尝试使报告也自动将通话总数细分为三个部分:4:30 至 6:29、6:30 至 8:29 和 8:30 至 10:30,如果这有助于您理解我正在尝试做的事情。

于 2013-10-10T01:24:32.703 回答