2013-09-26 2 views
2

Цель: с помощью SqlServer 2005, Выберите несколько столбцов, но убедитесь, что 1 конкретный столбец не является дубликатомКак выбрать несколько столбцов с одной отдельной колонкой

Выпуска: Следующий код не удалить дубликаты. Поле с дубликатами - электронная почта.

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

Благодарим вас за любые комментарии, предложения или рекомендации.

ответ

2

Он удаляет дубликаты электронной почты, но вы должны решить, какое имя, телефон вам нужно. Результат основан на имени, порядке сортировки телефона.

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 
1

Это способ сделать это

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 
Смежные вопросы