2014-03-05 3 views
0

나는 고객의 테이블이 있습니다SQL 레코드 하나 이상의 occurreance 찾기

Firstname Lastname Mobile Email 
내가 거기에 이동되는 모든 인스턴스를 찾아 실행할 수 SQL 서버에 어떤 쿼리 알고 싶습니다

예 :

Bob Smith 07789665544 [email protected] 
Bill Car 07789665544 [email protected] 

휴대 전화 번호에 여러 이메일 주소가있는 모든 기록을 찾고 싶습니다.

감사합니다.

+0

다음 번에 질문에 적절한 태그를 사용하십시오 –

답변

2

내가 NULL 수 있습니다 경우 EmailCOALESCE을 사용했습니다 EXISTS

SELECT c.* 
FROM dbo.Customers c 
WHERE EXISTS 
(
    SELECT 1 FROM dbo.Customers c2 
    WHERE c.Mobile = c2.Mobile 
    AND COALESCE(c.Email, '') <> COALESCE(c2.Email, '') 
) 

사용. 중첩 된 쿼리

0

CTE를 오히려 너무 빨리이 작업을 수행 할 수 있습니다 :

with DupeNumber as(
    select se.Mobile from (select distinct Mobile, Email from Customers) se 
     group by se.Mobile 
     having count(*) >1 
) 
select * from Customers 
    inner join DupeNumber dn on se.Mobile=dn.Mobile 
order by Mobile 

이것은 고유 팩스 및 이메일 조합의 목록을 만들고, 다음 두 개 이상의 전자 메일에 휴대 전화 번호를 찾습니다 , 원래 테이블로 돌아가 전체 행을 얻습니다.

관련 문제