选择Distinct,但包括非独特的时间戳

时间:2018-06-11 13:30:32

标签: sql oracle

在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标记。

1 个答案:

答案 0 :(得分:3)

您正在寻找的是聚合。您需要每个ID的最长时间:

select
  max(time), -- maximum time
  id
from mytable
group by id -- per id
order by id;