Many people will struct with their work when comming to delete duplicate records in a table with single querry.
I want to make it easy your job by following Querry.
Note: this Querry works in Sql Server 7.0 and above versions
SELECT *,ROW_NUMBER() OVER(PARTITION BY <Fieldname> ORDER BY <PrimaryKeyFieldName>) AS RANK1 FROM <TableName>
) Delete FROM T WHERE RANK1 > 1