我对这个有点心理障碍。
我有酒店房间的预订系统,它包含一张桌子
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% 的占用率。
问题
我想把它自动化成一个存储过程。
是否可以将其分组为给定年份的月份?
我将如何确保适合处理与一个月边界重叠的预订?