2017-10-06 110 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的詳細信息。因此,對於Oracle(也許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;