-1

我的查询名称:每日总订单汇总

我的输入 [2 列]:business_date,# Daily Orders

我需要这 3 列作为计算输出:Orders# (7 days) Average, Orders# (30 Days) Average ,Orders# (Acuum Average) [即从第一天到现在]


我已尽力为如何在 Microsoft Access 查询中进行移动/滚动平均找到明确的答案,但不幸的是,我无法让它为我工作。因此,我决定在这里提出我的请求,看看是否有人会让我朝着正确的方向开始处理我的文件和任务。

4

1 回答 1

0

我自己对相关子查询有疑问。这是我认为更容易的 VBA/Access 解决方案。

首先通过单击菜单上的创建并选择模块来将代码模块添加到数据库中 - 一直到右侧。然后创建一个公共函数,如:

Public Function AverageOrders(CurrentDate As Date, NumberofPriorDays As Integer) As Integer
AverageOrders = DSum("DailyOrders", "MyTable", "business_date BETWEEN #" & CurrentDate & "# AND #" & DateAdd("d", -NumberofPriorDays, CurrentDate) & "#")
End Function

我们以这种方式创建函数,以便访问智能感知。这是一种强大的技术,我也用它来包装任何访问表单参数的调用。要在查询中查找函数,请右键单击查询列的顶部并选择构建。在表达式元素下的构建向导中选择函数,然后选择您的数据库。将出现平均订单和您进行的任何其他公共功能。或者只是输入它。

然后你得到:

在此处输入图像描述

在此处输入图像描述

二月有28天。我们不使用 # 表示 DateOrders,因为在字符串中 # 表示日期。要获得累积平均值,只需选择一个荒谬的早期日期或制作另一个没有 [NumberofPriorDays] 的函数。

于 2021-03-11T06:46:38.120 回答