如何选择重复的最高记录并创建新表?
Posted
技术标签:
【中文标题】如何选择重复的最高记录并创建新表?【英文标题】:How to select top record of duplicates and create new table? 【发布时间】:2018-11-03 00:32:58 【问题描述】:我有下表:
=====================
RecNum ID Date
=====================
12345 188832 2045-01-07
33445 188832 2035-10-01
66789 188849 2047-10-18
77889 340520 2047-04-28
99776 340520 2047-04-28
=====================
我需要生成一个只有一个ID对应最新日期的新表。
如您所见,ID 188832 有两个日期:2045-01-07 和 2035-10-01。 我只需要最新的:2045-01-07。
188849 只有一个日期,应该保持原样。 340520 有两条相同日期的记录 - 我只需要选择一条。
RecNum 是唯一的。
【问题讨论】:
【参考方案1】:ROW_NUMBER
应该在这里工作:
SELECT RecNum, ID, Date
FROM
(
SELECT t.*, ROW_NUMBER() OVER (PARTITION BY ID ORDER BY Date DESC) rn
FROM yourTable t
) t
WHERE rn = 1;
请注意,在ID = 340520
的情况下,上述查询将任意选择两条记录之一。如果您有一些逻辑来确定如何处理此类关系,则可以修改查询。
【讨论】:
以上是关于如何选择重复的最高记录并创建新表?的主要内容,如果未能解决你的问题,请参考以下文章