首页 > 解决方案 > 使用 group by 获取最新的日期记录

问题描述

我正在尝试使用具有唯一 report_ids (col_1_0_) 的最新记录来获取记录。可能按 col_1_0_ 分组,并使用此列 col_10_0_ 时间戳获取该组记录的最新信息。

我试图搜索这个论坛以找到方法,但它对我不起作用。如果有人帮助我找到类似的线程或帮助我获得结果,那将会很有帮助。

col_1_0_|ppi_event_id|col_2_0_                  |col_10_0_              |
--------|------------|--------------------------|-----------------------|
  149056|        3249|Draft                     |2020-08-25 13:01:49.016|
  149056|        3249|Submitted                 | 2020-08-25 13:10:22.01|
  149056|        3249|Submitted to administrator|2020-08-25 13:12:39.367|
  149056|        3249|Validated                 |2020-08-25 13:13:28.879|
  149060|        3249|Submitted to administrator|2020-08-25 13:32:41.924|

预期的结果是

col_1_0_|ppi_event_id|col_2_0_                  |col_10_0_              |
--------|------------|--------------------------|-----------------------|
  149056|        3249|Validated                 |2020-08-25 13:13:28.879|
  149060|        3249|Submitted to administrator|2020-08-25 13:32:41.924|

任何人都可以在这方面提供帮助。更新:我已经尝试过下面提到的解决方案,但有时它会显示第一条记录“草稿”而不是“已验证”还有其他选项可以尝试吗?

标签: sqlpostgresqldatetimesql-order-bygreatest-n-per-group

解决方案


在 Postgres 中,我建议使用distinct on: 这是对 SQL 标准的一个很好的扩展,它是为您描述的目的而构建的。

select distinct on (col_1_0) t.*
from mytable t
order by col_1_0, col_10_0_ desc

推荐阅读