我有一个有2列的表。
身份证号码 Created_DT日期
我可以在ID中有重复的值(通常也可以)。我需要每个ID只获得1条记录,我需要Created_DT,所以我这样做:
select ID, Created_DT from table group by ID, Created_DT
然而,Created_DT也有时间,同一个ID可以跨越2秒,使其独一无二,返回2个记录而不是1.这是一个很小的差异,我不关心它。如果发生这种情况,我希望得到第一个。
执行任何类型的to_char()都不起作用,因为我想要实际的时间。我在group_by Created_DT上尝试了to_char(),只是它没有运行。
关于如何实现这一目标的任何想法?
答案 0 :(得分:4)
我认为创建日期的聚合函数可以解决这个问题吗?
select ID, max(Created_DT) from table group by ID
答案 1 :(得分:4)
我知道你已经得到了答案,但为了将来的参考,我认为这会做你最初要求的(获得小组中的第一行)
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