2014-06-05 3 views
-1

에 따라 그룹화 내가 가진 여러 객실 예약에 대한 몇 가지 우선 순위를 가진 여러 날짜를 수행 할 수 있습니다 아래의 테이블 구조, 나는 각 날짜에 대한 우선 순위가 높은 roomid를 필터링 할는 두 개의 열

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

, I meetingdate 및 roomid 모두 사용, 그것은 PLS 나에게 해결책을 알려 않는, 논리적으로는 작동하지 않습니다 작동하지

답변

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