我有以下表格结构,可以为多个日期进行多个房间预订,并优先考虑,
MeetingDate RoomID Priority
----------- ------ --------
2014-06-05 2 2
2014-06-05 3 3
2014-06-06 3 3
我想为每个日期过滤高优先级的房间,当我同时使用meetdate和roomid时,它不起作用,从逻辑上说它不起作用,请告诉我解决方案
答案 0 :(得分:0)
尝试:
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 :(得分:0)
如果您的优先级是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,你可能有冲突/双重预订。