如何在 ACCESS QUERY 中创建过去 7 天、30 天累积平均值的滚动/移动平均值?

时间:2021-03-10 07:47:50

标签: ms-access rolling-average

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

我的输入 [2 列]: business_date,# 每日订单

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


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

1 个答案:

答案 0 :(得分: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

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

然后你得到:

enter image description here

enter image description here

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

相关问题