Excluir registros que são considerados duplicados com base no mesmo valor em uma coluna e manter o mais novo
Gostaria de excluir os registros que são considerados duplicatas com base em eles com o mesmo valor em uma determinada coluna e manter um que seja considerado o mais novo com base em InsertedDate no meu exemplo abaixo. Eu gostaria de uma solução que não use um cursor, mas é baseada em conjunto. Objetivo: excluir todos os duplicados e manter o mais novo.
O ddl abaixo cria algumas duplicatas. Os registros que precisam ser excluídos são: John1 e John2, porque eles têm o mesmo ID que John3 e John3 é o registro mais recente.
Registre também que o John5 precisa ser excluído porque há outro registro com ID = 3 e é mais recente (John6).
Create table dbo.TestTable (ID int, InsertedDate DateTime, Name varchar(50))
Insert into dbo.TestTable Select 1, '07/01/2009', 'John1'
Insert into dbo.TestTable Select 1, '07/02/2009', 'John2'
Insert into dbo.TestTable Select 1, '07/03/2009', 'John3'
Insert into dbo.TestTable Select 2, '07/03/2009', 'John4'
Insert into dbo.TestTable Select 3, '07/05/2009', 'John5'
Insert into dbo.TestTable Select 3, '07/06/2009', 'John6'