Выберите следующую дату, которая не включена в набор

JD Gamboa спросил: 03 февраля 2018 в 10:19 в: sql

У меня есть представление, в котором перечислены некоторые события, происходящие на следующий день.

SELECT column1, column2...
FROM table1
WHERE date = CAST(CURRENT_DATE + INTERVAL '1 DAY' AS DATE)

Тем не менее, у меня есть таблица "запрещенных дат": я не могу использовать этот определенный набор дат , поэтому, если следующий день находится в этом запрещенном списке, он должен перейти к следующему. Пример:

SELECT column1, column2...
FROM table1
WHERE 
    CASE 
        WHEN CAST(CURRENT_DATE + INTERVAL '1 DAY' AS DATE) IN (SELECT DISTINCT date FROM forbidden_date)
        THEN CAST(CURRENT_DATE + INTERVAL '2 DAY' AS DATE)
    ELSE 
        CAST(CURRENT_DATE + INTERVAL '1 DAY' AS DATE)
    END = date

Проблема заключается в том, что "что, если второй следующий день также находится в запрещенном списке?" И так далее? "

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


0 ответов