首页 > 解决方案 > 选择同一天的最后一个 ID 值

问题描述

我有一个示例表,如下所示

ID 日期 信息
1 15.02.2020 一个
2 15.02.2020 b
1 15.02.2020 C
1 15.02.2020 d
3 15.02.2020 e
1 16.02.2020 F
3 16.02.2020 G
3 16.02.2020 H

我需要创建一个选择语句,在同一天向我显示每个 ID 的最后一行。正如你在下面看到的。

ID 日期 信息
2 15.02.2020 b
1 15.02.2020 d
3 15.02.2020 e
1 16.02.2020 F
3 16.02.2020 H

如何在 Oracle SQL 中管理它?

标签: sqloraclegreatest-n-per-group

解决方案


一种方法使用相关子查询:

select t.*
from t
where t.id = (select max(t2.id)
              from t t2
              where t2.info = t.info and t2.date = t.date
             );

您还可以使用窗口函数:

select t.*
from (select t.*,
             row_number() over (partition by info, date order by id desc) as seqnum
      from t
     ) t
where seqnum = 1;

推荐阅读