在ORACLE SQL中显示具有最长期间预留的客户端的名称

时间:2016-05-24 12:38:27

标签: sql oracle

问题:显示预订时间最长的客户的名称。

提供的表格,

CLIENT (ClientNo, Name, Sex, DOB, Address, Phone, Email, Occupation,
MaritalStatus, Spouse, Anniversary)

RESERVATION (ResNo, ResDate, NoOfGuests, StartDate, EndDate,
ClientNo, Status)

到目前为止我做的是这个,

SELECT * FROM (
  SELECT C.Name
  FROM Client C, Reservation R
  Where C.ClientNo = R.ClientNo
  ORDER BY R.EndDate - R.StartDate DESC)
  WHERE rownum = 1;

它给了我想要的结果,但我被告知“没有内置的ORACLE列编号(例如ROWNUM)或其他Oracle排名设施 (例如RANK)可以在这里使用。“

1 个答案:

答案 0 :(得分:1)

好的,我解决了。谢谢你的暗示。我使用了MAX()函数。

SELECT C.Name
FROM Client C, Reservation R
WHERE C.ClientNo = R.ClientNo AND
R.EndDate-R.StartDate = (
SELECT MAX(R.EndDate-R.StartDate)
FROM Reservation R);