Необходимо проверить условие диапазона дат с помощью запроса - PullRequest
0 голосов
/ 24 декабря 2018

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

CATEGORY:
beginDT             EndDt
01-sep-2018        16-oct-2018
17-sep-2018        31-Dec-2018

MEMBER Enroll:
BeginDt           EndDt
01-sep-2018      31-oct-2018

Когда я хочу рассмотреть ЧЛЕНА, ЗАПИСАННОГО на октябрь месяц.Требуется запрос, чтобы проверить, охватывается ли полный октябрь в таблицах CATEGORY.

1 Ответ

0 голосов
/ 24 декабря 2018

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

WITH calendar AS (
    SELECT date '2018-10-01' AS dt FROM dual UNION ALL
    SELECT date '2018-10-02' FROM dual UNION ALL
    SELECT date '2018-10-03' FROM dual UNION ALL
    ...
    SELECT date '2018-10-31' FROM dual
)

Затем мы можем просто присоединить эту таблицу календаря к таблице категорий, чтобы пометить любые даты в октябре, которые не охватываются:

SELECT
    c.dt
FROM calendar c
LEFT JOIN category cat
    ON c.dt BETWEEN CAT.beginDT AND cat.EndDt
WHERE
    cat.beginDT IS NULL;

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

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