2017-10-06 1 views
-2

테이블이 있습니다 : WaiterWaiterDetailCafe입니다. 카페에는 많은 웨이터가있을 수 있으며 웨이터에는 웨이터 상세 정보가 많이있을 수 있습니다. HiredDate가 처음으로 고용 한 웨이터의 CreatedDate 필드에서 가장 오래된 WaiterDetail을 찾고 싶습니다.SQL : 두 개의 관련 테이블에서 최대 값 선택

Cafe: 
    *CafeId(primary) 

Waiter: 
    *WaiterId(primary) 
    *CafeId 
    *HiredDate 

WaiterDetail: 
    *WaiterDetailID(primary) 
    *WaiterId 
    *CreatedDate 

어떻게 OracleMS SQL Server에 대한 질의 모양을?

+6

은 숙제처럼 보입니까? – Squirrel

+0

샘플 데이터 및 예상 결과를 제공하십시오. – GSazheniuk

+3

왜 SQL Server와 Oracle을 동시에 요구합니까? – Tanner

답변

1

내가 맞을 경우 : 각 카페는 첫 번째 (가장 빠른) HiredDate의 웨이터를 찾고 그 웨이터는 가장 오래된 (가장 빠른) CreatedDate의 세부 정보를 찾습니다. 따라서 오라클 (및 SQL Server)의 경우 다음과 같이됩니다.

SELECT * 
FROM (
    SELECT w.*, 
     d.*, 
     ROW_NUMBER() OVER (PARTITION BY CafeID 
          ORDER BY w.HiredDate ASC, 
             d.CreatedDate ASC) AS rn 
    FROM Waiter w 
     INNER JOIN WaiterDetail d 
     ON (w.WaiterId = d.WaiterId) 
) 
WHERE rn = 1; 
관련 문제