Запрос Oracle за 2 предыдущих рабочих дня - PullRequest
0 голосов
/ 25 января 2019

Мы используем Oracle 11. У нас есть таблица DateRanges, которая дает нам предыдущий рабочий день, выполнив этот запрос:

SELECT START_DATE FROM DateRanges WHERE ID = 14

-> START_DATE - предыдущий рабочий день (в приведенном выше примере START_DATE = 1/24/19

У нас есть таблица со столбцом даты (LIQ.UPD_DT), и нам нужно выполнить СЛЕВОЕ СОЕДИНЕНИЕ между таблицей LIQ и запросом SEC, где LIQ.UPD_DT> 2 предыдущего рабочего дня.

Например: Сегодня 1/25 / 19.

Предыдущие 2 рабочих дня: 1/23 / 19.

Как мы выполняем этот запрос? (Мне нужно использовать (+) = для LEFT JOIN, потому что приложение, которому я передаю этот запрос, не выполняет синтаксис LEFT JOIN):

WHERE LIQ.ID (+)= SEC.ID AND LIQ.UPD_DT (+) >= '{2 previous business day}'

Спасибо.

1 Ответ

0 голосов
/ 25 января 2019

В Oracle вы можете добавлять и вычитать дни (и их доли) из и в даты. Итак, сегодня sysdate, включающий дату и время, поэтому вам не важно время, тогда "> trunc (sysdate) - 2" будет таким, как вы пишете сравнение.

Чтобы добавить к тому, что я опубликовал ранее, вам нужно будет настроить рабочие дни и то, как вы это делаете, зависит от вашего магазина. В некоторых магазинах есть таблица календаря с праздничными днями и т. Д., Но одним из способов является использование кода, подобного следующему, чтобы пропустить субботу и воскресенье. - - выберите trunc (sysdate) - r от (выберите rownum r из двойного соединения с помощью rownum

TRUNC (SYS

24-JAN-19 23-JAN-19 22-JAN-19 21-JAN-19 18-JAN-19 17-JAN-19

6 выбранных строк. - Обратите внимание, что 19-го и 20-го нет в списке, и такой расчет заменил бы жестко заданные 2 дня выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...