Как создать скользящее / скользящее среднее в ЗАПРОСЕ ДОСТУПА за последние 7 дней, 30-дневное накопительное среднее?

Имя моего запроса: Сводка по общему количеству ежедневных заказов

Мой ввод [2 столбца]: business_date,# Daily Orders

Мне нужны эти 3 столбца в качестве расчетного вывода: Заказы № (7 дней) Среднее, Заказы № (30 дней) Среднее, Заказы № (Акуумное среднее) [т.е. с первого дня до даты]


Я изо всех сил старался найти четкие ответы о том, как выполнять скользящее/скользящее среднее значение в запросе Microsoft Access, но, к сожалению, мне не удалось заставить его работать на меня. Поэтому я решил разместить свою просьбу здесь, чтобы узнать, не направит ли меня кто-нибудь в правильном направлении, чтобы начать работу над моими файлами и задачами.


person Said Al-Hajri    schedule 10.03.2021    source источник
comment
Отвечает ли это на ваш вопрос? Запрос скользящего среднего MS Access   -  person June7    schedule 10.03.2021


Ответы (1)


У меня проблемы с коррелированными подзапросами. вот решение 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

мы создаем функцию таким образом, чтобы доступ к intellisense работал. Это мощная техника, которую я также использую для переноса любых вызовов для доступа к параметрам формы. Чтобы найти функцию в запросе, щелкните правой кнопкой мыши верхнюю часть столбца запроса и выберите «Построить». В мастере сборки под элементами выражений выберите функции, а затем базу данных. Появятся средние заказы и любые другие публичные функции, которые вы делаете. Или просто введите его.

тогда вы получите:

введите здесь описание изображения

введите здесь описание изображения

В феврале 28 дней. Мы не используем # для DateOrders, потому что в строках # обозначает дату. Чтобы получить накопленное среднее значение, просто выберите абсурдно раннюю дату или создайте другую функцию без [NumberofPriorDays].

person mazoula    schedule 11.03.2021
comment
Большое спасибо Мазула за ваше время и помощь. Я попытался сделать именно то, что вы объясняете в своем ответе. Но, к сожалению, я продолжаю получать это сообщение Undefined function 'AverageOrders' в выражении. - person Said Al-Hajri; 11.03.2021
comment
Я получаю эту ошибку, когда забываю поставить публику перед AverageOrders. Проверьте, не забыли ли вы поместить public перед своей функцией. - person mazoula; 12.03.2021
comment
это также может произойти, если вы случайно создали модуль класса, а не обычный модуль. - person mazoula; 12.03.2021