• -- I have added DateInserted and Address columns to show how to remove all old records for the same person

    --drop table #DuplicateRow

    CREATE TABLE #DuplicateRow(

    ID INT identity(1,1),

    DateInserted Datetime,

    FName varchar(30),

    LName varchar(30),

    JobTitle varchar(30),

    Age tinyint,

    [Address] Varchar(255)

    )

    GO

    INSERT INTO #DuplicateRow (DateInserted,FName,LName,JobTitle,Age,[Address])

    SELECT DateInserted,FName,LName,JobTitle,Age,[Address] FROM (

    SELECT '1/1/12' [DateInserted], 'Mangu' [FName],'Changu' [LName],'Bekar' [JobTitle], 21 [Age] , '1 broad street,ny ' [Address]UNION ALL

    SELECT '2/1/12' [DateInserted],'Mangu' [FName],'Changu' [LName],'Bekar' [JobTitle], 21 [Age] , '11 broad street,ny ' [Address]UNION ALL

    SELECT '6/1/12' [DateInserted],'Mehul' [FName],'Shah' [LName],'Manager' [JobTitle], 55 [Age] , '1 main street,ny' [Address]UNION ALL

    SELECT '3/1/12' [DateInserted],'Mehul' [FName],'Shah' [LName],'Manager' [JobTitle], 55 [Age] , '11 main street,ny' [Address]UNION ALL

    SELECT '7/1/12' [DateInserted],'Mangu' [FName],'Changu' [LName],'Bekar' [JobTitle], 21 [Age] , '11/a broad street,ny' [Address]UNION ALL

    SELECT '8/1/12' [DateInserted],'Mangu' [FName],'Changu' [LName],'Bekar' [JobTitle], 21 [Age] , '11/b broad street,ny' [Address]UNION ALL

    SELECT '9/1/12' [DateInserted],'Mehul' [FName],'Shah' [LName],'Manager' [JobTitle], 55 [Age] , '115 main street,ny' [Address]UNION ALL

    SELECT '10/1/12' [DateInserted],'Mehul' [FName],'Shah' [LName],'Manager' [JobTitle], 55 [Age], '118 main street,ny' [Address]

    ) A

    SELECT * FROM #DuplicateRow order by FName,LName,JobTitle,Age,DateInserted desc

    -- we need to remove all rows except id= 6 and 8

    SELECT

    ROW_NUMBER() OVER ( PARTITION BY FName, LName, JobTitle, Age ORDER BY DateInserted desc ) R

    , FName

    , LName

    , JobTitle

    , Age

    FROM #DuplicateRow

    SELECT *

    FROM ( SELECT ROW_NUMBER() OVER ( PARTITION BY FName, LName, JobTitle, Age ORDER BY DateInserted desc) R

    , FName

    , LName

    , JobTitle

    , Age

    FROM #DuplicateRow

    ) B

    WHERE R > 1

    DELETE B

    FROM ( SELECT ROW_NUMBER() OVER ( PARTITION BY FName, LName, JobTitle, Age ORDER BY DateInserted desc ) R

    FROM #DuplicateRow

    ) B

    WHERE R > 1

    SELECT * FROM #DuplicateRow