Нам необходимо проанализировать потребление детали.Данные, которые у меня есть, взяты из нашей системы ERP.Идея состоит в том, чтобы найти «дыры» там, где в будущем слишком много запасов.
Part_number Sign Count Date
4711 B 100 12.04.2019
4711 - 2 16.04.2019
4711 - 1 18.04.2019
4711 - 3 01.05.2019
4711 - 5 14.05.2019
4711 - 1 18.05.2019
4711 + 25 23.05.2019
4711 - 7 24.05.2019
4711 - 1 01.06.2019
4711 - 1 14.06.2019
4711 - 6 15.06.2019
4711 + 15 23.07.2019
4711 - 7 24.07.2019
4711 - 3 01.08.2019
4711 - 25 14.08.2019
4711 - 6 15.08.2019
4712 B 10 12.04.2019
4712 - 2 13.04.2019
4712 - 3 14.04.2019
4713 … … …
Описания колонок:
- Part_number => Самоочевидно, наверное,
- Знак
- Текущий запас "B",
- "-" Деталь, использованная для создания заказа,
- "+" Заказанные новые детали и планируемая дата прибытия
- Количество => Сумма
- Дата => Запланированная дата в будущем
Моя идея состоит в том, чтобы разделить данные по разделам.Секции начинаются всякий раз, когда происходит положительное изменение в запасе, например поступающий заказ, и заканчиваются следующим положительным изменением в запасе.Первый и последний раздел являются исключением.Первый раздел начинается с сегодняшней даты и заканчивается следующим положительным изменением.Последний раздел начинается с последнего положительного изменения и заканчивается последней строкой данных.
Я ожидаю, что таблица разделов на основе приведенных выше данных будет выглядеть следующим образом.
Part_number Section Date_start Date_end
4711 1 12.04.2019 23.05.2019
4711 2 23.05.2019 23.07.2019
4711 3 23.07.2019 15.08.2019
4712 1 12.04.2019 14.04.2019
Чтобы найти «дыры», необходимо подсчитать столбец подсчета, что приводит к следующей таблице
Part_number Section Date_start Date_end Sum
4711 1 12.04.2019 23.05.2019 88 <= 100-2-1-3-5-1
4711 2 23.05.2019 23.07.2019 98 <= 88+25-7-1-1-6
4711 3 23.07.2019 15.08.2019 72 <= 98+15-7-3-25-6
4712 1 12.04.2019 14.04.2019 5 <= 10-2-3
Наш сервер баз данных - Microsoft Sql Server 2016.
В настоящее время я используюконструкция курсора для массажа данных и получения того, что я хочу.Как вы можете себе представить, это, вероятно, не лучший подход.Я хотел бы улучшить этот запрос, и я с нетерпением жду любых подсказок, которые смогу получить.
Спасибо!