dealing with duplicates on a daily basis, i find this approach works well
alter table withdupes add delid int identity(1,1)
delete x
from withdupes x
inner join (
select itemno, min(delid) as keepid
from withdupes
group by itemno
) y on x.itemo = y.itemno
where x.delid <> y.keepid
alter table withdupes drop column delid