SQL-запрос для проверки ВСЕХ дней между диапазоном дат

У меня есть таблица цен с датой начала, датой окончания и ценой. Я хочу, чтобы поиск проходил в диапазоне дат и возвращал, существует ли цена для всех дней в этом диапазоне. Диапазон дат может охватывать несколько цен, но не должно быть разрывов между ними.

Это возможно?

Prices
startDate datetime
endDate datetime
price

DECLARE @startDate datetime = '2010-04-01',
        @endDate datetime = '2010-04-30'

SELECT * FROM Prices WHERE @startDate BETWEEN startDate AND endDate...

person Mark Clancy    schedule 10.03.2010    source источник
comment
Это точная копия вопроса, который здесь задавали много раз. См. Здесь: stackoverflow.com/ questions / 271595 /   -  person David    schedule 11.03.2010
comment
Спасибо, я явно не искал то, что нужно.   -  person Mark Clancy    schedule 11.03.2010
comment
Я вообще-то думаю, что это другое. Чтобы ответить на этот вопрос, не нужно выяснять все даты.   -  person D'Arcy Rittich    schedule 11.03.2010
comment
Я думаю ты прав. это не дубликат. Почему я не могу отменить свой голос, чтобы закрыть?   -  person David    schedule 11.03.2010
comment
Ах да, я думал, что этот ответ поможет, но, возможно, это не совсем то, что я ищу. Я использую SQL 2008. Мне просто нужно проверить, есть ли разрыв между указанным диапазоном дат в таблице цен.   -  person Mark Clancy    schedule 11.03.2010
comment
Тогда на это можно было бы ответить с помощью другого вопроса о переполнении стека: stackoverflow.com/questions/1025688/   -  person Jose Chama    schedule 11.03.2010


Ответы (1)


Добавьте группировку в свой запрос с помощью оператора Have:

HAVING COUNT(*) = DATEDIFF(DAY,@StartDate,@EndDae)+1
person Gary W    schedule 10.03.2010