2012-11-18 89 views

回答

1

甲骨文另一種方法是這樣的:

SELECT 
    dr_drvname AS "Name", 
    trunc(months_between(sysdate, dr_birthdate)/12) AS "Highest Age" 
FROM 
(
SELECT 
    dr_drvname, 
    dr_birthdate 
FROM 
    driver 
ORDER BY 
    dr_birthdate 
) 
WHERE 
    ROWNUM = 1; 
0

嘗試這樣:

SELECT top 1 
    Firstname, LastName, Max([BirthDate]) as Oldest  
    FROM [Employees] 
    group by BirthDate, FirstName, LastName 

注:有什麼要求,如果多人有相同的出生日期?

+0

我可以使用WHERE TRUNC((SYSDATE-dr_brthdate)/ 365)> 97,因爲我知道最高年齡是98歲,但這並不總是成立。沒有要求列出。 –

+0

我測試了我原來的建議,並且失敗了,所以我編輯了我的答案。你仍然必須把部分計算年齡。 –

+0

這個問題被標記爲Oracle,Oracle不支持'top 1'語法(儘管可以使用12g中的某些增強功能來替代)。 –

0

您可以使用分析功能

select dr_drvname as "Name", 
     trunc(months_between(sysdate, dr_birthdate)/ 12) "Highest Age" 
    from (select dr_drvname , 
       dr_birthdate, 
       rank() over (order by dr_birthdate) rnk 
      from driver) 
where rnk = 1; 
+0

謝謝!此方法有效 –

相關問題