我有下面的表结构,其中多个客房登记服务可以为多个日期与一些优先级来完成,分组基于两列
MeetingDate RoomID Priority
----------- ------ --------
2014-06-05 2 2
2014-06-05 3 3
2014-06-06 3 3
我要筛选的高优先级roomid每个日期,当我同时使用meetingdate和roomid,它不工作,在逻辑上就不能正常工作,请不要让我知道了解决方案
我有下面的表结构,其中多个客房登记服务可以为多个日期与一些优先级来完成,分组基于两列
MeetingDate RoomID Priority
----------- ------ --------
2014-06-05 2 2
2014-06-05 3 3
2014-06-06 3 3
我要筛选的高优先级roomid每个日期,当我同时使用meetingdate和roomid,它不工作,在逻辑上就不能正常工作,请不要让我知道了解决方案
尝试:
SELECT
t1.MeetingDate, t1.RoomID
FROM your_table t1
INNER JOIN (
SELECT MeetingDate, MAX(Priority) AS MaxPriority
FROM your_table
GROUP BY MeetingDate
) t2 ON t1.MeetingDate = t2.MeetingDate AND t1.Priority = t2.MaxPriority
如果你的优先级为1 =最高优先级, 3 =最低,你可能正在寻找
select
yt.meetingDate,
yt.roomID,
min(yt.priority) as highestPriority,
count(*) as TimesBooked
from
yourTable yt
group by
yt.meetingDate,
yt.roomID
所以这样,你只会得到一个给定的日期和最高优先级的房间的记录。如果您的优先级颠倒了,其中1为低优先级,3为高,那么只需将MIN()更改为MAX()
此外,如果您想知道是否存在任何可能的冲突(即:给定日期的空间),您可以添加上面添加的计数。所以,如果有的“TimesBooked”大于1,那么您可能会发生冲突/双重预订。
谢谢,如何找到具有相同优先级的房间? – user3682227
感谢您提供解决方案 – user3682227