Usuń rekordy, które są uważane za duplikaty na podstawie tej samej wartości w kolumnie i zachowaj najnowsze

Chciałbym usunąć rekordy, które są uważane za duplikaty, na podstawie których mają tę samą wartość w określonej kolumnie i zachowują taką, która jest uważana za najnowszą na podstawie InsertedDate w moim przykładzie poniżej. Chciałbym rozwiązanie, które nie używa kursora, ale jest ustawione na podstawie. Cel: usuń wszystkie duplikaty i zachowaj najnowszy.

Poniższy ddl tworzy kilka duplikatów. Rekordy, które należy usunąć, to: John1 i John2, ponieważ mają ten sam identyfikator, co John3, a John3 to najnowszy rekord.

Również rekord John5 musi zostać usunięty, ponieważ jest inny rekord o ID = 3 i jest nowszy (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'

questionAnswers(2)

yourAnswerToTheQuestion