Пример 17. Используя сведения о платежах, получить общую оплату по каждому предприятию нарастающим итогом от начала года.
Сначала дополним базу данных таблицей КАЛЕНДАРЬ, где № МЕСЯЦА - ключевое текстовое поле и НАИМЕНОВАНИЕ МЕС - текстовое поле.
| № МЕСЯЦА
| НАИМЕНОВАНИЕ МЕСЯЦА
|
|
| Январь
|
|
| Февраль
|
|
| Март
|
|
| Апрель
|
Количество месяцев в календаре зависит от того периода, на который вычисляются нарастающие итоги.
Рассмотрим решение задачи по шагам.
Шаг 1. На основе таблиц ПЛАТЕЖИ и СПЕЦИФИКАЦИЯ ПЛАТЕЖЕЙ создадим запрос, в котором преобразуем дату в месяц (числовой) и вычислим суммы выплат каждого предприятия по месяцам.

В результате выполнения запроса получим:

Сохраним запрос под именем Суммы выплат по месяцам.
Шаг 2. На основе предыдущего запроса и таблицы календарь создадим запрос, в котором получим суммы нарастающим итогом.
Объекты не связывать!

Группировка выполняется по предприятиям, а затем по месяцам. В этих группах суммируются Sum-Cумма. Суммируются суммы оплаты при условии, что месяц оплаты <= (меньше или равен) месяцу календаря, то есть в пределах календаря.
При выполнении запроса получим:

Назвать запрос Нарастающие суммы.
Шаг 3. Если сумма в каждом следующем месяце не меняется, то получить итоги по последнему месяцу, в котором произошли изменения. Для этого использовать функцию Min для месяца. Запрос строим на основе предыдущего запроса.

Выполнить запрос:

Присвоить запросу имя Нарастающий итог.