2011-09-14 1 views
2

Comment supprimer des doublons de la table où toutes les colonnes sont significatives en dehors de PK.Comment se grouper pour se débarrasser des lignes dupliquées

declare @dummy table 
(
    pk int, 
    a char(1), 
    b char(1), 
    c char(1) 
) 

insert into @dummy 
select 1, 'A', 'B', 'B' union all 
select 2, 'A', 'B', 'B' union all 
select 3, 'P', 'Q', 'R' union all 
select 4, 'P', 'Q', 'R' union all 
select 5, 'X', 'Y', 'Z' union all 
select 6, 'X', 'Y', 'Z' union all 
select 7, 'A', 'B', 'Z' 

ce que je reçois avec distinction out:

select * from @dummy 

pk   a b c 
----------- ---- ---- ---- 
1   A B B 
2   A B B 
3   P Q R 
4   P Q R 
5   X Y Z 
6   X Y Z 
7   A B Z 

Ce que je voudrais est:

select ... do magic .... 

pk   a b c 
----------- ---- ---- ---- 
1   A B B 
3   P Q R 
5   X Y Z 
7   A B Z 

Répondre

3

Trouvé:

select min(pk), a, b, c 
from @dummy 
group by a, b, c 
+1

LOL, félicitations! J'étais presque là, me battre de 11 secondes =) – jadarnel27

0

Au début, je pensais que distincte serait le faire, mais je suis assez certain de ce que vous voulez est un groupe par:

select * from @dummy group by a,b,c 

Comme il y a une expérience unique clé primaire, toutes les lignes sont distinctes.

Questions connexes