在Oracle中,如果多个行在一列中具有相同的值(例如ID
)但每个行在TIME
列中具有不同的值,是否可以制定SELECT
语句为每个不同的ID
选择最近的一行?
例如,如果我有下表:
TIME ID
---------------
6:45AM 1
6:00AM 1
2:00PM 2
3:00PM 2
3:30PM 2
7:00AM 3
8:00PM 4
7:30PM 4
我希望返回以下内容的SELECT
语句:
TIME ID
---------------
6:45AM 1
3:30PM 2
7:00AM 3
8:00PM 4
我可以弄清楚如何在没有TIME
列的情况下返回除之外的所需结果:
SELECT DISTINCT ID FROM TABLE1
但我无法弄清楚如何让结果也包含每个不同TIME
的最新ID
标记。
答案 0 :(得分:3)
您正在寻找的是聚合。您需要每个ID的最长时间:
select
max(time), -- maximum time
id
from mytable
group by id -- per id
order by id;