2014-06-05 57 views
-1

我有下面的表结构,其中多个客房登记服务可以为多个日期与一些优先级来完成,分组基于两列

MeetingDate RoomID Priority 
----------- ------ -------- 
2014-06-05 2  2 
2014-06-05 3  3 
2014-06-06 3  3 

我要筛选的高优先级roomid每个日期,当我同时使用meetingdate和roomid,它不工作,在逻辑上就不能正常工作,请不要让我知道了解决方案

回答

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 
+0

感谢您提供解决方案 – user3682227

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,那么您可能会发生冲突/双重预订。

+0

谢谢,如何找到具有相同优先级的房间? – user3682227