Использование SQL Server 2005
Выйти из таблицы
ID StartDate EndDate
001 02/03/2010 02/03/2010
002 02/03/2010 null
…
Таблица событий
ID Date
001 02/03/2010
001 02/04/2010
001 02/05/2010
002 02/03/2010
002 02/04/2010
002 02/05/2010
….
Все типы данных столбца даты datetime
.
У меня есть номер идентификатора.
Я хочу создать столбец состояния, сравнивая дату из таблицы событий с датой окончания из таблицы отпусков.
Условия 1
- Если в таблице отпуска для определенного идентификатора имеются даты начала и окончания, то она должна отображаться как «отпуск» в таблице событий для конкретной даты
Запрос
Select
id, date
, CASE WHEN t2.id IS NULL THEN null ELSE ‘Leave’ END AS status
from event table as t1
left outer join leave table as t2 on
t1.id = t2.id and t1.date between t2.startdate and t2.enddate
Условия 2
- Если дата начала доступна, а дата окончания недоступна в таблице отпусков для определенного идентификатора, то она должна отображаться как «Оставить» в таблице событий на оставшиеся даты
Запрос
Select
id, date,
, CASE WHEN t2.id IS NULL THEN null ELSE ‘Leave’ END AS status
from event table as t1
left outer join leave table as t2 on
t1.id = t2.id and t1.date > t2.startdate
Ожидаемый результат
ID Date Status
001 02/03/2010 Leave
001 02/04/2010
001 02/05/2010
002 02/03/2010 Leave
002 02/04/2010 Leave
002 02/05/2010 Leave
….
Приведенный выше запрос работает, но я хочу сделать из него один запрос с двумя условиями
Как сделать запрос для вышеуказанного условия.
Нужна помощь по запросу