如何根据另一个字段选择字段中的MAX值

时间:2015-04-29 14:19:27

标签: sql oracle max

我目前有一个查询(Oracle查询将结果从链接服务器返回到SQL表),返回如下结果: -

PersonID | EncounterNo | Location
---------+-------------+-----------
123456   | 1           | London
123456   | 2           | Manchester
123456   | 3           | Glasgow
246810   | 1           | Liverpool
246810   | 2           | Newcastle
357911   | 1           | Edinburgh
357911   | 2           | Aberdeen
357911   | 3           | Dublin

我想为每个MAX选择PersonID值,因此输出结果如下: -

PersonID | EncounterNo | Location
---------+-------------+-------------
123456   | 3           | Glasgow
246810   | 2           | Newcastle
357911   | 3           | Dublin

2 个答案:

答案 0 :(得分:3)

SELECT t.*
FROM table t
INNER JOIN (
    SELECT t.PersonID, MAX(t.EncounterNo)
    FROM table t
    GROUP BY t.PersonID
) j
ON t1.PersonID = j.PersonID AND t.EncounterNo = j.EncounterNo 

答案 1 :(得分:0)

SELECT YT.* 
FROM YOUR_TABLE YT, (SELECT MAX(EncounterNo) MAX_No, PersonID PID 
                     FROM YOUR_TABLE 
                     GROUP BY PERSONID) AA
WHERE YT.PersonID = AA.PID AND YT.EncounterNo = AA.MAX_No;