Comment select-vous plusieurs colonnes avec une colonne distincte

Objectif: utiliser SqlServer 2005, Sélectionnez plusieurs colonnes, mais assurez-vous qu'une colonne spécifique n'est pas un doublon

Problème: le code suivant ne supprime pas les duplicates. Le champ qui a des duplicates est email.

SELECT DISTINCT email, name, phone FROM database.dbo.table WHERE status = 'active' GROUP BY email, name, phone 

Merci d'avance pour vos commentaires, suggestions ou recommandations.

Il supprime les duplicates d'e-mails, mais vous devez décider du nom, du téléphone dont vous avez besoin. Le résultat est basé sur le nom, l'ordre de sorting téléphonique.

 WITH cl as ( SELECT email, name, phone, ROW_NUMBER() OVER(PARTITION BY email ORDER BY name, phone) rn FROM database.dbo.table WHERE status = 'active') select * from cl where rn =1 

C'est une façon de le faire

 DECLARE @Table AS TABLE (email NVARCHAR(100), name NVARCHAR(100), phone NVARCHAR(100)) INSERT INTO @Table ( email , name , phone) VALUES ( N'fred', -- email - nvarchar(100) N'bob', -- name - nvarchar(100) N'steve' -- phone- nvarchar(100) ) INSERT INTO @Table ( email , name , phone) VALUES ( N'fred', -- email - nvarchar(100) N'bob2', -- name - nvarchar(100) N'ste1ve' -- phone- nvarchar(100) ) INSERT INTO @Table ( email , name , phone) VALUES ( N'fred1', -- email - nvarchar(100) N'bob3', -- name - nvarchar(100) N'steve3' -- phone- nvarchar(100) ) SELECT email , MAX(name ) c2, MAX(col3) c3 FROM @Table GROUP BY email