我有一个有 2 列的表。
身份证号码 Created_DT 日期
我可以在 ID 中有重复的值(并且经常这样做)。我只需要为每个 ID 获取 1 条记录,我需要 Created_DT 所以我这样做:
select ID, Created_DT from table group by ID, Created_DT
Run Code Online (Sandbox Code Playgroud)
但是,Created_DT 也有时间,对于相同的 ID,可以跨越 2 秒,使其唯一并返回 2 条记录而不是 1 条记录。这是一个很小的差异,我不关心它。如果发生这种情况,我只想得到第一个。
做任何类型的 to_char() 都不起作用,因为我想要实际时间。我在 group_by Created_DT 上尝试 to_char() 只是它没有运行。
关于我如何做到这一点的任何想法?
我认为创建日期的聚合函数可以解决问题吗?
select ID, max(Created_DT) from table group by ID
Run Code Online (Sandbox Code Playgroud)
我看到您已经得到了答案,但为了将来的参考,我认为这会满足您最初的要求(获取组中的第一行)
WITH grp AS
(
SELECT p.id, p.Created_DT, ROW_NUMBER()
OVER(PARTITION BY p.id ORDER BY p.Created_DT DESC) AS rnk
FROM YOUR_TABLE p
)
SELECT g.* FROM grp g WHERE g.rnk = 1
Run Code Online (Sandbox Code Playgroud)