【发布时间】:2009-11-16 18:06:53
【问题描述】:
我对这个有点心理障碍。
我有酒店房间的预订系统,它包含一个表格
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% 的占用率。
问题
我想把它自动化成一个存储过程。
是否可以将给定年份的月份分组?
我将如何确保适合处理与月份范围重叠的预订?
【问题讨论】:
-
样本数据和预期结果总是有帮助的!
标签: sql sql-server sql-server-2008 date-manipulation