2017-01-23 9 views
0

Say У меня есть следующая таблица, Питер и Халла,Получить экземпляр для электронной почты

Name Age occupation BillingContactEmail 
------------------------------------------- 
Peter 44 Salesman [email protected] 
Andy 43 Manager  [email protected] 
Halla 33 Fisherman [email protected] 

Как построить SQL, чтобы вернуть этот набор данных:

Name Age occupation BillingContactEmail 
------------------------------------------- 
Peter 44 Salesman [email protected] 
Halla 33 Fisherman [email protected] 

, где мы только извлечь экземпляр для электронной почты? (То есть мы будем иметь четкое письмо, в конце концов)

+0

Как вы выбрали Питера над Энди? – Bohemian

+0

@Bohemian случайным образом будет делать – william007

ответ

0

попробовать это

;with cte (rowno, Name, Age, Occupation, BillingContactEmail) 
as (
    select row_number() over (partition by BillingContactEmail order by BillingContactEmail), Name, Age, Occupation, BillingContactEmail 
    from myTable 
) 
select Name, Age, Occupation, BillingContactEmail from cte 
where rowno = 1 

Вы можете рассмотреть индексировать столбцы для повышения производительности.

, конечно, если вы хотите уточнить, кому выбрать, вам необходимо настроить order by соответственно.

если возраст/род занятий не имеет значения, вы всегда можете получить имена сгруппированы по электронной почте, так как:

select stuff((select concat(',', Name) from myTable a where a.BillingContactEmail = t.BillingContactEmail for xml Path('')), 1, 1, '') as Name, 
     BillingContactEmail 
from myTable t 
group by BillingContactEmail 

выход:

Name   BillingContactEmail 
------------- -------------------- 
Peter,Andy [email protected] 
Halla   [email protected] 
0

Попробуйте что-то вроде

Select distinct email, 
     (
      Select tb1.First_Name+ ',' AS [text()] 
      From dbo.table1 tb1 
      Where tb1.Email = '[email protected]' 
      For XML PATH ('') 
     ) [Students] 
From dbo.table2 
WHERE Email = '[email protected]' 

Выход:

Name   BillingContactEmail 
------------- -------------------- 
Peter,Andy, [email protected]