У меня есть таблица встреч с встречами для ряда «ресурсов», мне нужно сделать запрос и вернуть (для определенного ресурса) все свободные слоты встреч в диапазоне дат.
У меня былоЯ подумал, что лучший способ достичь этого - создать временную таблицу возможных времен встречи (поскольку продолжительность встречи может быть 30/60/90 минут - продолжительность встречи будет указана для запроса.), а затем выбрать пересечениеэти два набора записей.т. е. все они - в диапазоне дат - там, где нет встреч в таблице встреч.таким образом, возвращая все возможные встречи для этого ресурса.
или, может быть, просто - снова - сгенерируйте записи возможных дат и времени встреч, а затем, за исключением фактических уже записанных встреч ...?
, если, конечно, кто-то неможет предложить более простой вариант .?
также не совсем уверен, как создать таблицу возможных вариантов, то есть таблицу с записями для 2010-12-08 09:00, 2010-12-08 10:00,
и т. д. (для встреч на 1 час) ...
есть идеи?
редактировать: есть смутное представление о возможных ...
DECLARE @startDate DateTime
DECLARE @EndDate DateTime
set @startDate = '2010-12-08 09:00'
set @endDate = '2010-12-11 09:00';
with mycte as
(
select cast(@startDate as datetime) DateValue
union all
select dateadd(mi,30,DateValue)
from mycte
where DateValue <= @endDate
and datepart(hh, dateadd(mi,30,DateValue)) Between 9 AND 16
)
select DateValue
from mycte