I need to remove semi duplicate records from the following table
ID PID SCORE
1 1 50
2 33 20
3 1 90
4 5
try this..
declare @tt table(id int, pid int,score int)
insert into @tt
select 1,1,50 union all
select 2,33,50 union all
select 8,33,80 union all
select 3,1,90 union all
select 4,5,50 union all
select 5,5,10 union all
select 6,6,10 union all
select 7,6,50
---------
delete from @tt where id in (
select t1.id from @tt t1 inner join
(
select MIN(score) tScore,pid tPid from @tt where pid in
(select pid from @tt group by pid having count (pid) > 1) group by pid
) t2 on t1.pid=t2.tPid and t1.score=t2.tScore)
select * from @tt