У меня немного психический блок на этом.
У меня есть система бронирования номеров в отелях, и она содержит таблицу как
BookingRoomLink
BookingId (FK)
RoomId (FK)
Дата_начала
Датой_окончания
Я бы хотел запросить данные для извлечения уровней занятости за каждый месяц.
Я мог бы сделать это вручную (то есть за последний месяц сделать что-то подобное).
SELECT BookingRoomLink.Start_Date,
BookingRoomLink.End_Date,
DATEDIFF("d", BookingRoomLink.Start_Date, BookingRoomLink.End_Date) as RoomNights
FROM BookingRoomLink
WHERE BookingRoomLink.Start_Date >= dateadd(m, -1, getdate())
AND BookingRoomLink.End_Date <= GETDATE()
Тогда я могу подсчитать результаты или аналогичные результаты, которые дадут мне «использованные» ночи в комнате, и вычесть их из числа комнат, доступных за месяц.
Например. 10 комнат
x 30 дней в месяце = 300 возможных ночей в номере. 150 использованных (результат запроса) = 50% занятости.
Проблема
Я бы хотел автоматизировать это в хранимую процедуру.
Можно ли сгруппировать это по месяцам для данного года?
Как бы я обеспечил надлежащую обработку заказов, которые перекрывают границы месяца?