У меня немного психического блока по этому поводу.
У меня есть система бронирования гостиничных номеров, и в ней есть такая таблица.
BookingRoomLink
BookingId (FK)
RoomId (FK)
Start_Date
End_Date
Я хотел бы запросить данные, чтобы извлечь уровни занятости за каждый месяц. Я мог бы сделать это вручную (т.е. за последний месяц сделать что-то вроде этого).
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% занятости.
Проблема
Я хотел бы автоматизировать это в хранимую процедуру.
Можно ли сгруппировать это по месяцам для данного года?
Как я могу гарантировать, что заказы, которые перекрывают границу месяца, обрабатываются надлежащим образом?