我正在处理一个只有两列 - Address
和 DateEntered
的表。该表有多个具有不同 DateEntered
的重复记录。像这样:
Address | DateEntered
--------------+---------------------
10 Park Ave | 5-6-2012
7 Sterling Rd | 7-8-2012
10 Park Ave | 2-2-2010
10 Park Ave | 5-20-2021
我想保留最近日期的地址并去掉旧的地址。结果应该是这样的:
Address | DateEntered
--------------+---------------
7 Sterling Rd | 7-8-2012
10 Park Ave | 5-20-2021
你能帮我构建这个查询吗?我什至不知道从哪里开始。我正在阅读有关 Common Table Expressions 的内容,但没有到达任何地方。
答案 0 :(得分:4)
通过 CTE
与窗口函数 row_number()
一起快速简便
示例或dbFiddle
;with cte as (
Select *
,RN = row_number() over (partition by address order by DateEntered Desc)
From YourTable
)
Delete from cte where RN>1
更新后的表格
Address DateEntered
7 Sterling Rd 2012-07-08
10 Park Ave 2021-05-20