У меня есть отчет, который запускается ежедневно, он показывает количество заказов, но между sysdate и sysdate +2. Единственная проблема заключается в том, что мы не работаем в выходные дни, никогда не было записей для SAT / SUN.
Когда отчет запускается в пятницу, чтобы забрать заказы сегодня и в понедельник, понедельник игнорируется, потому что sysdate + 2 включает выходные. Так что это только возврат заказов на сегодня.
Я дошел до этого далеко, но он все еще не полностью игнорирует SAT / SUN, но исключил бы его, только если бы он действительно существовал.
Любой идеи?
SELECT order_header.ship_by_date
FROM order_header
WHERE (order_header.ship_by_date >= TRUNC(sysdate) AND order_header.ship_by_date < TRUNC(SYSDATE) + 2
AND
(order_header.ship_by_date IN (SELECT order_header.ship_by_date
FROM ORDER_HEADER
WHERE TO_CHAR(order_header.ship_by_date, 'DAY') NOT IN ('SAT','SUN'))))
Ниже приведен запрос, который я запустил:
FROM order_header
WHERE order_header.ship_by_date >= TRUNC (SYSDATE)
AND order_header.ship_by_date <
TRUNC (SYSDATE)
+ CASE WHEN TO_CHAR (SYSDATE, 'DY') = 'FRIDAY' THEN 4 ELSE 2 END```
Results returned:
SHIP_BY_DATE
31-JAN-20 00.00.00.000000000
31-JAN-20 00.00.00.000000000
31-JAN-20 00.00.00.000000000
31-JAN-20 00.00.00.000000000
31-JAN-20 00.00.00.000000000
31-JAN-20 00.00.00.000000000
Если я запускаю этот запрос, я получаю результаты понедельника, но это не помогает, так как включает в себя сБ / SUN. Вы можете увидеть, как вернулись 31-Ян и 03-Фев.
FROM order_header
WHERE order_header.ship_by_date >= TRUNC (SYSDATE)
AND order_header.ship_by_date <
TRUNC (SYSDATE) +4
SHIP_BY_DATE
31-JAN-20 10.14.00.000000000
31-JAN-20 10.17.00.000000000
31-JAN-20 11.09.00.000000000
31-JAN-20 11.20.00.000000000
03-FEB-20 00.00.00.000000000
03-FEB-20 00.00.00.000000000