Что такое нарастающим итогом

Нарастающие итоги в Power Pivot и Power BI

У нас накопились ответы на вопросы о накопительных итогах (даже ответы про накопительные итоги – накапливаются =) Такое впечатление, что с задачей рассчитать нарастающие или накопительные итоги сталкивается практически каждый слушатель наших курсов. И вопрос стоит даже не в том, какую формулу использовать.

Обычно всех интересуют нюансы. Например, как «остановить» нарастающий итог, чтобы он не отображался в периодах, где данных еще нет. Или как считать такой итог не в рамках года, а за все время.

Немного о нарастающих итогах

Нарастающий итог – это сумма показателей, где к данным текущего периода добавляются суммы предыдущих периодов. Вычисления нарастающих итогов обычно просят руководители, чтобы увидеть показатели с начала месяца, квартала или года, например, продажи или прибыль. Или посмотреть, сколько денег принес проект за все время работы. Совсем специфический случай – моделирование расчетных остатков, переходящих из года в год.

Отсюда, вычисления можно разделить на два вида:
а) внутри периода (с начала месяца, квартала, года);
б) без привязки к периодам.

В Power Pivot и Power BI для расчета нарастающих итогов есть специальные формулы.

DAX-формулы для расчета нарастающих итогов

Что такое нарастающим итогом. Смотреть фото Что такое нарастающим итогом. Смотреть картинку Что такое нарастающим итогом. Картинка про Что такое нарастающим итогом. Фото Что такое нарастающим итогом

Что такое нарастающим итогом. Смотреть фото Что такое нарастающим итогом. Смотреть картинку Что такое нарастающим итогом. Картинка про Что такое нарастающим итогом. Фото Что такое нарастающим итогом

Что такое нарастающим итогом. Смотреть фото Что такое нарастающим итогом. Смотреть картинку Что такое нарастающим итогом. Картинка про Что такое нарастающим итогом. Фото Что такое нарастающим итогом

4. Нарастающий итог без привязки к периодам.

При расчете нарастающего итога без привязки к периодам показатели будут суммироваться с самого начала проекта – с его первой даты, а в начале нового периода не «сбросятся».

Источник

Нарастающий итог в SQL

Нарастающий (накопительный) итог долго считался одним из вызовов SQL. Что удивительно, даже после появления оконных функций он продолжает быть пугалом (во всяком случае, для новичков). Сегодня мы рассмотрим механику 10 самых интересных решений этой задачи – от оконных функций до весьма специфических хаков.

В электронных таблицах вроде Excel нарастающий итог вычисляется очень просто: результат в первой записи совпадает с её значением:

Что такое нарастающим итогом. Смотреть фото Что такое нарастающим итогом. Смотреть картинку Что такое нарастающим итогом. Картинка про Что такое нарастающим итогом. Фото Что такое нарастающим итогом

… а затем мы суммируем текущее значение и предыдущий итог.

Что такое нарастающим итогом. Смотреть фото Что такое нарастающим итогом. Смотреть картинку Что такое нарастающим итогом. Картинка про Что такое нарастающим итогом. Фото Что такое нарастающим итогом

Что такое нарастающим итогом. Смотреть фото Что такое нарастающим итогом. Смотреть картинку Что такое нарастающим итогом. Картинка про Что такое нарастающим итогом. Фото Что такое нарастающим итогом

Что такое нарастающим итогом. Смотреть фото Что такое нарастающим итогом. Смотреть картинку Что такое нарастающим итогом. Картинка про Что такое нарастающим итогом. Фото Что такое нарастающим итогом

Появление в таблице двух и более групп несколько усложняет задачу: теперь мы считаем несколько итогов (для каждой группы отдельно). Впрочем, и здесь решение лежит на поверхности: необходимо каждый раз проверять, к какой группе принадлежит текущая запись. Click and drag, и работа выполнена:

Что такое нарастающим итогом. Смотреть фото Что такое нарастающим итогом. Смотреть картинку Что такое нарастающим итогом. Картинка про Что такое нарастающим итогом. Фото Что такое нарастающим итогом

Как можно заметить, подсчёт нарастающего итога связан с двумя неизменными составляющими:
(а) сортировкой данных по дате и
(б) обращением к предыдущей строке.

Но что SQL? Очень долго в нём не было нужного функционала. Необходимый инструмент – оконные функции – впервые появился только стандарте SQL:2003. К этому моменту они уже были в Oracle (версия 8i). А вот реализация в других СУБД задержалась на 5-10 лет: SQL Server 2012, MySQL 8.0.2 (2018 год), MariaDB 10.2.0 (2017 год), PostgreSQL 8.4 (2009 год), DB2 9 для z/OS (2007 год), и даже SQLite 3.25 (2018 год).

1. Оконные функции

Оконные функции – вероятно, самый простой способ. В базовом случае (таблица без групп) мы рассматриваем данные, отсортированные по дате:

… но нас интересуют только строки до текущей:

В конечном итоге, нам нужна сумма с этими параметрами:

А полный запрос будет выглядеть так:

В случае нарастающего итога по группам (поле grp ) нам требуется только одна небольшая правка. Теперь мы рассматриваем данные как разделённые на «окна» по признаку группы:

Что такое нарастающим итогом. Смотреть фото Что такое нарастающим итогом. Смотреть картинку Что такое нарастающим итогом. Картинка про Что такое нарастающим итогом. Фото Что такое нарастающим итогом

Чтобы учесть это разделение необходимо использовать ключевое слово partition by :

И, соответственно, считать сумму по этим окнам:

Тогда весь запрос преобразуется таким образом:

Производительность оконных функций будет зависеть от специфики вашей СУБД (и её версии!), размеров таблицы, и наличия индексов. Но в большинстве случаев этот метод будет самым эффективным. Тем не менее, оконные функции недоступны в старых версиях СУБД (которые ещё в ходу). Кроме того, их нет в таких СУБД как Microsoft Access и SAP/Sybase ASE. Если необходимо вендоро-независимое решение, следует обратить внимание на альтернативы.

2. Подзапрос

Как было сказано выше, оконные функции были очень поздно введены в основных СУБД. Эта задержка не должна удивлять: в реляционной теории данные не упорядочены. Куда больше духу реляционной теории соответствует решение через подзапрос.

Такой подзапрос должен считать сумму значений с датой до текущей (и включая текущую): Что такое нарастающим итогом. Смотреть фото Что такое нарастающим итогом. Смотреть картинку Что такое нарастающим итогом. Картинка про Что такое нарастающим итогом. Фото Что такое нарастающим итогом.

Что в коде выглядит так:

Чуть более эффективным будет решение, в котором подзапрос считает итог до текущей даты (но не включая её), а затем суммирует его со значением в строке:

В случае нарастающего итога по нескольким группам нам необходимо использовать коррелированный подзапрос:

Условие g.grp = t2.grp проверяет строки на вхождение в группу (что, в принципе, сходно с работой partition by grp в оконных функциях).

3. Внутреннее соединение

Поскольку подзапросы и джойны взаимозаменяемы, мы легко можем заменить одно на другое. Для этого необходимо использовать Self Join, соединив два экземпляра одной и той же таблицы:

Точно также можно сделать для случая с разными группами grp :

4. Декартово произведение

Раз уж мы заменили подзапрос на join, то почему бы не попробовать декартово произведение? Это решение потребует только минимальных правок:

Или для случая с группами:

Перечисленные решения (подзапрос, inner join, cartesian join) соответсвуют SQL-92 и SQL:1999, а потому будут доступны практически в любой СУБД. Основная проблема всех этих решений в низкой производительности. Это не велика беда, если мы материализуем таблицу с результатом (но ведь всё равно хочется большей скорости!). Дальнейшие методы куда более эффективны (с поправкой на уже указанные специфику конкретных СУБД и их версий, размер таблицы, индексы).

5. Рекурсивный запрос

Один из более специфических подходов – это рекурсивный запрос в common table expression. Для этого нам необходим «якорь» – запрос, возвращающий самую первую строку:

Часть кода, добавляющая один день, не универсальна. Например, это r.dt = dateadd(day, 1, cte.dt) для SQL Server, r.dt = cte.dt + 1 для Oracle, и т.д.

Совместив «якорь» и основной запрос, мы получим окончательный результат:

Решение для случая с группами будет ненамного сложнее:

6. Рекурсивный запрос с функцией row_number()

Итак, для рекурсивного запроса с row_number() нам понадобится два СТЕ. В первом мы только нумеруем строки:

… и если номер строки уже есть в таблице, то можно без него обойтись. В следующем запросе обращаемся уже к cte1 :

А целиком запрос выглядит так:

… или для случая с группами:

7. Оператор CROSS APPLY / LATERAL

Один из самых экзотических способов расчёта нарастающего итога – это использование оператора CROSS APPLY (SQL Server, Oracle) или эквивалентного ему LATERAL (MySQL, PostgreSQL). Эти операторы появились довольно поздно (например, в Oracle только с версии 12c). А в некоторых СУБД (например, MariaDB) их и вовсе нет. Поэтому это решение представляет чисто эстетический интерес.

Функционально использование CROSS APPLY или LATERAL идентично подзапросу: мы присоединяем к основному запросу результат вычисления:

… что целиком выглядит так:

Похожим будет и решение для случая с группами:

Итого: мы рассмотрели основные платформо-независимые решения. Но остаются решения, специфичные для конкретных СУБД! Поскольку здесь возможно очень много вариантов, остановимся на нескольких наиболее интересных.

8. Оператор MODEL (Oracle)

Оператор MODEL в Oracle даёт одно из самых элегантных решений. В начале статьи мы рассмотрели общую формулу нарастающего итога:

Что такое нарастающим итогом. Смотреть фото Что такое нарастающим итогом. Смотреть картинку Что такое нарастающим итогом. Картинка про Что такое нарастающим итогом. Фото Что такое нарастающим итогом

MODEL позволяет реализовать эту формулу буквально один к одному! Для этого мы сначала заполняем поле total значениями текущей строки

Функция cv() здесь отвечает за значение текущей строки. А весь запрос будет выглядеть так:

9. Курсор (SQL Server)

Нарастающий итог – один из немногих случаев, когда курсор в SQL Server не только полезен, но и предпочтителен другим решениям (как минимум до версии 2012, где появились оконные функции).

Реализация через курсор довольно тривиальна. Сначала необходимо создать временную таблицу и заполнить её датами и значениями из основной:

Затем задаём локальные переменные, через которые будет происходить обновление:

После этого обновляем временную таблицу через курсор:

И, наконец, получем нужный результат:

10. Обновление через локальную переменную (SQL Server)

Обновление через локальную переменную в SQL Server основано на недокументированном поведении, поэтому его нельзя считать надёжным. Тем не менее, это едва ли не самое быстрое решение, и этим оно интересно.

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

Сначала заполним @tv данным из основной таблицы

Затем табличную переменную @tv обновим, используя @VarTotal :

… после чего получим окончательный результат:

Резюме: мы рассмотрели топ 10 способов расчёта нарастающего итога в SQL. Как можно заметить, даже без оконных функций эта задача вполне решаема, причём механику решения нельзя назвать сложной.

Источник

Дополнительные вычисления в сводных таблицах

Интересный факт: часто встречаю пользователей, которые хорошо владеют инструментом сводных таблиц, но при этом не знают о такой их возможности, как дополнительные вычисления в сводных таблицах. Такие вычисления доступны в Excel 2010–2016, а в Excel 2007 дополнительные вычисления «спрятаны» в параметрах поля и их гораздо меньше.

Например, у нас есть простая таблица Excel по продажам вот с такими данными:

Что такое нарастающим итогом. Смотреть фото Что такое нарастающим итогом. Смотреть картинку Что такое нарастающим итогом. Картинка про Что такое нарастающим итогом. Фото Что такое нарастающим итогом

Предположим, нам нужно построить несколько отчетов:

Разберем, как создать такие отчеты с помощью дополнительных вычислений в сводных таблицах.

1. Процентная структура продаж

Чтобы с помощью сводных таблиц определить процентную структуру продаж, нужно сделать несколько простых действий.

Шаг 1. Постройте сводную таблицу, где в области строк Города и Товары, а в области сумм — Доходы (если вы не знаете, как создать сводную таблицу, посмотрите статью «Как построить сводную таблицу в Excel»).

Что такое нарастающим итогом. Смотреть фото Что такое нарастающим итогом. Смотреть картинку Что такое нарастающим итогом. Картинка про Что такое нарастающим итогом. Фото Что такое нарастающим итогом

Шаг 2. Щелкаем правой кнопкой мыши по любому числу в сводной таблице и выбираем раздел:
Дополнительные вычисления → % от общей суммы. В появившемся меню доступно несколько способов вычисления процентов:

а) % от общей суммы – рассчитывается к итоговой сумме, от «угла».

Что такое нарастающим итогом. Смотреть фото Что такое нарастающим итогом. Смотреть картинку Что такое нарастающим итогом. Картинка про Что такое нарастающим итогом. Фото Что такое нарастающим итогом

Если переместить данные по Городам в область строк, а Товары в столбцы, мы увидим, что общий процент считается как по строкам, так и по колонкам, и сумма процентов равна 100%.

Что такое нарастающим итогом. Смотреть фото Что такое нарастающим итогом. Смотреть картинку Что такое нарастающим итогом. Картинка про Что такое нарастающим итогом. Фото Что такое нарастающим итогом

б) % от суммы по столбцу или по строке.
Если требуется рассчитать структуру продаж, например, только по Городам, выбираем % от суммы по столбцу. Если только по товарам, соответственно – по строке.

Что такое нарастающим итогом. Смотреть фото Что такое нарастающим итогом. Смотреть картинку Что такое нарастающим итогом. Картинка про Что такое нарастающим итогом. Фото Что такое нарастающим итогом

в) А если нужно видеть структуру продаж и по товарам, и по городам? Не проблема! Нужно выбрать % от суммы по родительской строке.
Тогда процент рассчитается от суммы группы, а не от общего итога. А сумма процентов внутри группы будет равна 100%.

Что такое нарастающим итогом. Смотреть фото Что такое нарастающим итогом. Смотреть картинку Что такое нарастающим итогом. Картинка про Что такое нарастающим итогом. Фото Что такое нарастающим итогом

Шаг 3. Все, конечно замечательно, НО хотелось бы рядом с процентами видеть суммы. И это тоже не проблема! Открою маленький секрет: в область значений сводной таблицы мы можем несколько раз перетащить один и тот столбец. Для этого просто захватываем мышкой нужное поле и несколько раз перетаскиваем его в область сумм.

Что такое нарастающим итогом. Смотреть фото Что такое нарастающим итогом. Смотреть картинку Что такое нарастающим итогом. Картинка про Что такое нарастающим итогом. Фото Что такое нарастающим итогом

В сводной таблице появится несколько одинаковых столбцов значений, к которым можно применить разные дополнительные вычисления.

Что такое нарастающим итогом. Смотреть фото Что такое нарастающим итогом. Смотреть картинку Что такое нарастающим итогом. Картинка про Что такое нарастающим итогом. Фото Что такое нарастающим итогом

2. Продажи нарастающим итогом

В сводной таблице можно показать суммы доходов нарастающим итогом по месяцам. Это делается также с помощью инструмента дополнительных вычислений.

Шаг 1. Постройте сводную таблицу. В строки поместите Города, в столбцы — Месяцы.

Шаг 2. Правой кнопкой мыши по любому числу, выберите Дополнительные вычисления → С нарастающим итогом в поле.

Что такое нарастающим итогом. Смотреть фото Что такое нарастающим итогом. Смотреть картинку Что такое нарастающим итогом. Картинка про Что такое нарастающим итогом. Фото Что такое нарастающим итогом

Шаг 3. В открывшемся окне выбираем, что нарастание нужно по Месяцам и все готово!
Можно выбрать, относительно какого поля будет идти нарастание – строк и столбцов, городов или месяцев. В нашем случае выбран вариант нарастающего итога по месяцам. Кстати, столбец Общий итог пустой, потому что нарастающий итог рассчитан в декабре.

Что такое нарастающим итогом. Смотреть фото Что такое нарастающим итогом. Смотреть картинку Что такое нарастающим итогом. Картинка про Что такое нарастающим итогом. Фото Что такое нарастающим итогом

3. Темпы роста

Настроим отчет, в котором будут темпы роста, рассчитанные в сводной таблице.

Шаг 1. В новую сводную таблицу добавляем в строки Города, в столбцы Месяцы. В область значений – два одинаковых столбца Доходы.
Когда в области Значений появляется более двух полей, в столбцах появляется «виртуальное» поле «∑ Значения», которое определяет размещение данных в сводной таблице – по строкам или столбцам. Переместите «∑ Значения» в область строк.

Что такое нарастающим итогом. Смотреть фото Что такое нарастающим итогом. Смотреть картинку Что такое нарастающим итогом. Картинка про Что такое нарастающим итогом. Фото Что такое нарастающим итогом

Шаг 2. Щелкаем правой кнопкой мышки по числам одного из полей сводной таблицы и выбираем Дополнительные вычисления → Приведенное отличие. Указываем Базовое поле «месяцы», элемент – «назад».

Что такое нарастающим итогом. Смотреть фото Что такое нарастающим итогом. Смотреть картинку Что такое нарастающим итогом. Картинка про Что такое нарастающим итогом. Фото Что такое нарастающим итогом

Январь будет пустым, потому что перед ним нет других данных. Это место можно занять спарклайнами. Чтобы их добавить, перейдите в меню Вставка → Спарклайны → График.

Источник

нарастающим итогом

Смотреть что такое «нарастающим итогом» в других словарях:

167-ФЗ от 15.12.2001 — ВНИМАНИЕ! Этот нормативный акт изменен! См. Новую редакцию закона 15 декабря 2001 года N 167 ФЗ (в редакции на 30.12.2008 года) РОССИЙСКАЯ ФЕДЕРАЦИЯ ФЕДЕРАЛЬНЫЙ ЗАКОН ОБ ОБЯЗАТЕЛЬНОМ ПЕНСИОННОМ СТРАХОВАНИИ В РОССИЙСКОЙ ФЕДЕРАЦИИ Принят… … Бухгалтерская энциклопедия

Налог на прибыль организаций — 2009 2010 ИП … Бухгалтерская энциклопедия

Налог на прибыль организаций — 2009 2010 ИП … Бухгалтерская энциклопедия

НАЛОГ НА ПРИБЫЛЬ ОРГАНИЗАЦИЙ — федеральный налог по НК (глава 25) и Закону об основах налоговой системы, введен Федеральным законом от 6 августа 2001 г. № 110 ФЗ, взимается с 1 января 2002 г. (до этого взимался налог на прибыль предприятий). Налогоплательщики: российские… … Энциклопедия российского и международного налогообложения

НАЛОГ НА ДОХОДЫ ФИЗИЧЕСКИХ ЛИЦ — введен с 1 янв. 2001 (гл. 23 Налогового кодекса РФ). Плательщики: физич. лица, являющиеся налоговыми резидентами РФ, а также не являющиеся налоговыми резидентами РФ, но получающие доходы от источников, расположенных в России (налоговые резиденты… … Финансово-кредитный энциклопедический словарь

Лицевой счет — (Client account) Содержание Содержание Определения описываемого предмета Банковский Лицевой счет налогоплательщика Правила ведения лицевых счетов Ведение лицевых счетов. Порядок открытия лицевых счетов Порядок ведения лицевых счетов исчисленных… … Энциклопедия инвестора

Лицевый счет — (Client account) Содержание Содержание Определения описываемого предмета Банковский Лицевой счет налогоплательщика Правила ведения лицевых счетов Ведение лицевых счетов. Порядок открытия лицевых счетов Порядок ведения лицевых счетов Учет… … Энциклопедия инвестора

Единый социальный налог — Страховые взносы на обязательное страхование 2009 • 2010 • 2011 • 2012 • 2013 • 2014 2009 2010 ИП ООО … Бухгалтерская энциклопедия

Страховые взносы на обязательное страхование/2013 — Страховые взносы на обязательное страхование 2009 • 2010 • 2011 • 2012 • 2013 • 2014 … Бухгалтерская энциклопедия

ИНДЕКСАЦИЯ — способ сохранения реальной величины денежных требований и доходов в период инфляции. Индексация представляет собой корректировку величины не имеющих единовременного характера доходов физических лиц в денежных единицах Республики Беларусь из… … Юридический словарь современного гражданского права

Источник

Нарастающие итоги. Объединение двух таблиц с нарастающими итогами.

Что такое нарастающие итоги можно посмотреть здесь: //infostart.ru/public/61295/

Постановка задачи.

Менеджерам компании понадобилось знать, что нужно заказать у поставщиков для клиентов и видеть что уже едет под заказы клиентов. Они захотели использовать метод ФИФО, то есть кто раньше заказал тому и раньше приедет товар, дата отгрузки товаров и дата поставки товаров из заказов не учитывается. Так же считается что все заказы имеют уникальную дату. Операции учета ведутся в Управлении торговлей версии 11.0.9.8.

Задача специально упрощена для демонстрации объединения таблиц, в противном случае решение будет громоздким и сложным для понимания с первого взгляда.

ВЫБРАТЬ

Конечно можно было бы использовать РегистрНакопления.ЗаказыКлиентов.Остатки вместо РегистрНакопления.СвободныеОстатки.Остатки, но ведь нужно же выбрать только номенклатуру, которую нужно заказать.

2. Далее выбираем остатки заказов поставщиков и клиентов.

ВЫБРАТЬ
ОстаткиЗаказов.ЗаказПоставщику.Дата КАК Период,
ОстаткиЗаказов.Номенклатура,
ОстаткиЗаказов.ЗаказПоставщику,
ОстаткиЗаказов.КОформлениюОстаток
ПОМЕСТИТЬ ОстаткиЗаказовПоставщиков
ИЗ
РегистрНакопления.ЗаказыПоставщикам.Остатки(, Номенклатура В (ВЫБРАТЬ Номенклатура ИЗ СпрНоменклатура)) КАК ОстаткиЗаказов
;
ВЫБРАТЬ
ОстаткиЗаказов.ЗаказКлиента.Дата КАК Период,
ОстаткиЗаказов.Номенклатура,
ОстаткиЗаказов.ЗаказКлиента,
ОстаткиЗаказов.ЗаказаноОстаток
ПОМЕСТИТЬ ОстаткиЗаказовКлиентов
Из
РегистрНакопления.ЗаказыКлиентов.Остатки(, ЗаказКлиента.Статус НЕ В (ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.НеСогласован), ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.Согласован))
И Номенклатура В (ВЫБРАТЬ Номенклатура ИЗ СпрНоменклатура)) КАК ОстаткиЗаказов
;

Используем статусы заказов клиентов для отсечения заказов которые не делают движений в РегистрНакопления.СвободныеОстатки.Остатки.

3. Получаем для остатков заказов поставщиков и клиентов нарастаюище итоги.

СГРУППИРОВАТЬ ПО
ОстаткиПоЗаказам.Номенклатура,
ОстаткиПоЗаказам.ЗаказПоставщику,
ОстаткиПоЗаказам.КОформлениюОстаток
;

ВНУТРЕННЕЕ СОЕДИНЕНИЕ ОстаткиЗаказовКлиентов КАК ОстаткиПоЗаказамКопия
ПО ОстаткиПоЗаказам.Номенклатура = ОстаткиПоЗаказамКопия.Номенклатура
И ОстаткиПоЗаказам.Период >= ОстаткиПоЗаказамКопия.Период

СГРУППИРОВАТЬ ПО
ОстаткиПоЗаказам.Номенклатура,
ОстаткиПоЗаказам.ЗаказКлиента,
ОстаткиПоЗаказам.ЗаказаноОстаток
;
ВЫБРАТЬ
ОстаткиНарастающие.Номенклатура,
ОстаткиНарастающие.СуммаПосле КАК Точка
ПОМЕСТИТЬ ТочкиПересечений
ИЗ
ОстаткиНарастающие
ОБЪЕДИНИТЬ
ВЫБРАТЬ
Номенклатура,
СуммаПосле
ИЗ
КОформлениюНарастающие

5. Получим общие нарастающие итоги заказов поставщиков и заказов клиентов.

ВЫБРАТЬ

ТочкиПересечений.Номенклатура,
ТочкиПересечений.Точка,

ОстаткиНарастающие.ЗаказКлиента,
ОстаткиНарастающие.ЗаказаноОстаток,
ОстаткиНарастающие.СуммаПосле,
ОстаткиНарастающие.СуммаДо

ПОМЕСТИТЬ ОстаткиПоЗаказамНаростающие
ИЗ
ТочкиПересечений КАК ТочкиПересечений

ЛЕВОЕ СОЕДИНЕНИЕ КОформлениюНарастающие КАК КОформлениюНарастающие
ПО КОформлениюНарастающие.Номенклатура = ТочкиПересечений.Номенклатура
И КОформлениюНарастающие.СуммаПосле >= ТочкиПересечений.Точка
И КОформлениюНарастающие.СуммаДо = ТочкиПересечений.Точка
И ОстаткиНарастающие.СуммаДо

6. Следующие 2 запроса формирует решение поставленной задачи с дополнительными полями «ВНаличии», «ВПеремещениях», «ВЗаказахПоставщику» и «НужноЗаказать».

ВЫБРАТЬ
СпрНоменклатура.Номенклатура,
IsNull(ОстаткиТоваров.ВНаличииОстаток, 0) КАК ВНаличии,
IsNull(ОстаткиТоваров.ВРезервеОстаток, 0) КАК ВРезерве,
IsNull(ТоварыВДвиженииПеремещения.КПоступлениюОстаток, 0) КАК ВПеремещениях,
IsNull(ТоварыВДвиженииЗаказы.КПоступлениюОстаток, 0) КАК ВЗаказахПоставщику,
IsNull(ОстаткиТоваров.ВНаличииОстаток, 0)
+ IsNull(ТоварыВДвиженииПеремещения.КПоступлениюОстаток, 0)
+ IsNull(ТоварыВДвиженииЗаказы.КПоступлениюОстаток, 0) КАК Доступно

ПОМЕСТИТЬ ТаблицаНаличия
ИЗ
СпрНоменклатура КАК СпрНоменклатура

ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СвободныеОстатки.Остатки(,Номенклатура В (ВЫБРАТЬ Номенклатура ИЗ СпрНоменклатура)) КАК ОстаткиТоваров
ПО ОстаткиТоваров.Номенклатура = СпрНоменклатура.Номенклатура

ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыКПоступлению.Остатки(, ТипЗначения(ДокументПоступления) <> Тип(Документ.ЗаказПоставщику)
И Номенклатура В (ВЫБРАТЬ Номенклатура ИЗ СпрНоменклатура)) КАК ТоварыВДвиженииПеремещения
ПО ТоварыВДвиженииПеремещения.Номенклатура = СпрНоменклатура.Номенклатура

ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаНаличия КАК ТаблицаНаличия
ПО ТаблицаНаличия.Номенклатура = ОстаткиПоЗаказам.Номенклатура
И ТаблицаНаличия.Доступно

В результате получится что-то типа этого очета (с двумя вариантами внутри):

Что такое нарастающим итогом. Смотреть фото Что такое нарастающим итогом. Смотреть картинку Что такое нарастающим итогом. Картинка про Что такое нарастающим итогом. Фото Что такое нарастающим итогом

Послесловие.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *