2013-10-05 4 views
-1

표 1 :데이터 추출

PHONE_NUMBER | DATE 
--------------------------  
    10005  | 5/10/2013 
    15555  | 7/17/2013 
    58746  | 9/20/2013 

표 2 : 위의 두 테이블에서

PHONE_NUMBER | DATE 
--------------------------  
    10005 | 5/12/2013 
    10005 | 5/16/2013 
    15555 | 6/17/2013 
    15555 | 7/19/2013 
    58746 | 8/22/2013 
    58746 | 12/26/2013 
    58746 | 9/20/2013 

, 나는 매핑 표 1 PHONENUMBER에 의해 표 2에서 데이터를 추출 할 표 2 전화 번호와 표 2의 날짜는 표 1의 각 전화 번호 날짜의 정확히 동일한 날짜 또는 +/- 5 일 수 있습니다.

표 2는 중복 된 전화 번호를 가지며 위의 조건과 일치하는 모든 복제물을 추출해야합니다.

답변

3

나는 당신의 질문을 이해하면이 요구 사항을 충족해야합니다

SELECT 
     t2.phone_number 
     , convert(varchar(10),t2.[date],121) as t2_date 
     , convert(varchar(10),t1.[date],121) as t1_date 
     , datediff(DAY,t1.[date], t2.[date]) as diff_dates 
FROM table2 AS t2 
INNER JOIN table1 AS t1 ON t2.phone_number = t1.phone_number 
         AND t2.[date] between dateadd(day,-5,t1.[date]) and dateadd(day,5,t1.[date]) 

참조 : 샘플 데이터에서 this sqlfiddle

결과 :

| PHONE_NUMBER | T2_DATE | T1_DATE | DIFF_DATES | 
|--------------|------------|------------|------------| 
|  10005 | 2013-05-12 | 2013-05-10 |   2 | 
|  15555 | 2013-07-19 | 2013-07-17 |   2 | 
|  58746 | 2013-09-20 | 2013-09-20 |   0 | 
2

/* 가정하여 날짜 fileds이의있다 올바른 날짜 데이터 유형 */

SELECT a.* FROM TABLE1 a INNER JOIN TABLE2 b 
ON a.phone=b.phone AND (a.[date]=b.[date] OR b.[date] BETWEEN DATEADD(day,-5,b.[date]) AND DATEADD(day,5,b.[date]))