Я относительно новичок в запросе SQL, и мне нужна помощь в построении запроса, который будет принимать даты из ERP и сообщать мне следующую доступную дату доставки (фиксированную) из даты заказа, исходя из следующего:
Клиентам назначается день доставки: понедельник (маршрут доставки 1), вторник (маршрут доставки 2 и 3) ... и т. Д.
Заказы, введенные в систему за 3 рабочих дня до следующего доступного дня доставки, переносятся на следующий доступный день.
Таким образом, заказ, который был размещен в четверг, 11 апреля, для клиента, доставляющего в понедельник, будет доставлен в понедельник, 22 апреля, а не 15-го.
Вы можете спросить, почему вы не корректируете дату в самой ERP ... ну, это старая БД FOXPRO, и никто здесь не хочет возиться с функциями, которые были написаны нашей последней технологией. мы планируем отказаться от этой ERP в ближайшие 12–18 месяцев ... поэтому мы пытаемся создать некоторые инструменты с использованием SQL, POWERPIVOT и POWERBI.
У нас есть таблица календаря, чтобы помочь с запросом даты ... но я не могу разобраться с этим запросом ... пробовал некоторые вещи с помощью datediff и dateadd ... но не могу понять это ... снова я новичок в запросе SQL, но буду очень признателен за ваш вклад по этому вопросу.
WHEN C.CLIVR3 = '1' THEN (select min(cal.date) from cal where cal.date>ce.cfdcom and cal.date>GETDATE() and cal.[day No]=5)
WHEN C.CLIVR3 = '3' THEN (select min(cal.date) from cal where cal.date>ce.cfdcom and cal.date>GETDATE() and cal.[day No]=6)
WHEN C.CLIVR3 = '4' THEN (select min(cal.date) from cal where cal.date>ce.cfdcom and cal.date>GETDATE() and cal.[day No]=6)
Будет возвращен следующий доступный день доставки, но не будет учитываться условие 3 рабочих дней (если за 3 дня до дня доставки перейдите к следующему дню доставки)
C.CLIVR3 - номер маршрута доставки ... Cal - таблица календаря ... ce.cfdcom - дата заказа ... Cal. [Номер дня] - день недели
Рассматривая воскресенье как 1 (дата 7)
Опять ваш вклад будет высоко оценен
Rgds,