选择具有特定列的最大值的不同行

时间:2015-09-17 12:48:15

标签: oracle

在这个问题上寻求帮助。

我有一个表是驱动程序信息列表,我需要选择具有max report_date值的行。此外,驱动程序可以在每个report_date中多次出现,因此我需要不同的驱动程序。

我如何查询?

2 个答案:

答案 0 :(得分:1)

这将获得每个驱动程序的行(或行),其中包含每个驱动程序的最新报告日期。

SELECT *
FROM   (
  SELECT di.*,
         DENSE_RANK() OVER ( PARTITION BY driver ORDER BY report_date DESC ) AS rnk
  FROM   driver_information di
)
WHERE  rnk = 1;

如果您只希望每个驱动程序使用一行(而不是每个驱动程序的所有行都具有最新日期),请将DENSE_RANK更改为ROW_NUMBER

如果您只想要那些最新日期的行,那么您可以删除PARTITION BY driver子句。

答案 1 :(得分:0)

类似的东西:

select distinct driver
from mytable
where report_date = (select max(report_date) from mytable);