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