运行 对 FILTERED table 的 Access 查询
Running an Access query on a FILTERED table
我有一些相关的 table 想要 运行 Totals/Group 通过查询。
我的“票”table 有一个名为“PickDate”的字段,它是 order/ticket 完成的日期。
我想按工作日(名称)(一个计算字段)进行分组,以便对某些客户在一周中同一天的结果进行分组。然后可以计算每个工作日每个客户的平均工单完成时间。它看起来像下面这样。
--CustName---Day---AvTime
Customer 1 - MON - 72.3
- TUE - 84.2
- WED - 110.66
..etc
..etc
..etc
Customer 2 ..
这工作正常,但我遇到的问题是,当此查询为 运行 时,它适用于票证 table 中的每条记录。出于某些原因,对于某些报告,查询所引用的数据应限制在一个日期范围内;例如跟踪数周内持续时间的变化。
在查询属性中,有一个属性,“过滤器”,我可以在其中添加一个字符串,例如:
"([qryCustomerDetails].[PickDate] Between #11/1/2021# And #11/14/2021#)"
过滤结果。唯一的问题是,由于每个日期都是唯一的,因此类似日期(例如“星期一”)的“分组依据”会被这个唯一日期“11/1/2021”覆盖。只有当 PickDate 作为字段被删除时,查询才有效。但是,我无法访问它以根据它进行过滤。
我想达到的效果是一样的;在“门票”中 table 本身过滤两个日期之间的结果,然后有一个查询可以 运行 在那个 filtered table.
有什么方法可以实现吗?
此处供参考的是查询的 SQL。
FROM tblCustomers INNER JOIN tblTickets ON tblCustomers.CustomerID = tblTickets.CustomerID
GROUP BY tblCustomers.Customer, WeekdayName(Weekday([PickDate]),False,1), tblCustomers.Round, Weekday([PickDate])
ORDER BY tblCustomers.Round, Weekday([PickDate]);
您可能遇到了两个问题。第一个问题是,要按未汇总的字段过滤总计查询中的结果,您使用的是 HAVING 而不是 WHERE。第二个问题是在查询时不存在像 Day 这样的计算字段。你不能说 Day > Mon。相反,您必须重复 Day 的计算:Having CalculateDay(PickDate) > Monday
设计师通常会弄清楚你是否想要自动拥有或在哪里。所以这是我的例子:
这给你 SQL:
SELECT Tickets.Customer, WeekdayName(Weekday([PickDate])) AS [Day], Avg(Tickets.Time) AS AvTime
FROM Tickets
GROUP BY Tickets.Customer, WeekdayName(Weekday([PickDate])), Tickets.PickDate
HAVING (((Tickets.PickDate) Between #11/16/2021# And #11/17/2021#))
ORDER BY Tickets.PickDate;
我有一些相关的 table 想要 运行 Totals/Group 通过查询。
我的“票”table 有一个名为“PickDate”的字段,它是 order/ticket 完成的日期。
我想按工作日(名称)(一个计算字段)进行分组,以便对某些客户在一周中同一天的结果进行分组。然后可以计算每个工作日每个客户的平均工单完成时间。它看起来像下面这样。
--CustName---Day---AvTime
Customer 1 - MON - 72.3
- TUE - 84.2
- WED - 110.66
..etc
..etc
..etc
Customer 2 ..
这工作正常,但我遇到的问题是,当此查询为 运行 时,它适用于票证 table 中的每条记录。出于某些原因,对于某些报告,查询所引用的数据应限制在一个日期范围内;例如跟踪数周内持续时间的变化。
在查询属性中,有一个属性,“过滤器”,我可以在其中添加一个字符串,例如:
"([qryCustomerDetails].[PickDate] Between #11/1/2021# And #11/14/2021#)"
过滤结果。唯一的问题是,由于每个日期都是唯一的,因此类似日期(例如“星期一”)的“分组依据”会被这个唯一日期“11/1/2021”覆盖。只有当 PickDate 作为字段被删除时,查询才有效。但是,我无法访问它以根据它进行过滤。
我想达到的效果是一样的;在“门票”中 table 本身过滤两个日期之间的结果,然后有一个查询可以 运行 在那个 filtered table.
有什么方法可以实现吗?
此处供参考的是查询的 SQL。
FROM tblCustomers INNER JOIN tblTickets ON tblCustomers.CustomerID = tblTickets.CustomerID
GROUP BY tblCustomers.Customer, WeekdayName(Weekday([PickDate]),False,1), tblCustomers.Round, Weekday([PickDate])
ORDER BY tblCustomers.Round, Weekday([PickDate]);
您可能遇到了两个问题。第一个问题是,要按未汇总的字段过滤总计查询中的结果,您使用的是 HAVING 而不是 WHERE。第二个问题是在查询时不存在像 Day 这样的计算字段。你不能说 Day > Mon。相反,您必须重复 Day 的计算:Having CalculateDay(PickDate) > Monday 设计师通常会弄清楚你是否想要自动拥有或在哪里。所以这是我的例子:
这给你 SQL:
SELECT Tickets.Customer, WeekdayName(Weekday([PickDate])) AS [Day], Avg(Tickets.Time) AS AvTime
FROM Tickets
GROUP BY Tickets.Customer, WeekdayName(Weekday([PickDate])), Tickets.PickDate
HAVING (((Tickets.PickDate) Between #11/16/2021# And #11/17/2021#))
ORDER BY Tickets.PickDate;