Löschen Sie Datensätze, die als Duplikate basierend auf demselben Wert in einer Spalte betrachtet werden, und behalten Sie den neuesten Wert bei

Ich möchte Datensätze löschen, die als Duplikate betrachtet werden und denselben Wert in einer bestimmten Spalte haben, und einen Datensatz behalten, der in meinem nachstehenden Beispiel als der neueste basierend auf InsertedDate gilt. Ich hätte gerne eine Lösung, die keinen Cursor verwendet, sondern auf Mengen basiert. Ziel: Alle Duplikate löschen und die neuesten behalten.

Die unten stehende DDL erstellt einige Duplikate. Folgende Datensätze müssen gelöscht werden: John1 & John2, da sie dieselbe ID wie John3 haben und John3 der neueste Datensatz ist.

Datensatz John5 muss ebenfalls gelöscht werden, da ein weiterer Datensatz mit der ID = 3 vorhanden und neuer ist (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'

Antworten auf die Frage(2)

Ihre Antwort auf die Frage