-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

上記の 2 つのテーブルから、テーブル 1 の電話番号をテーブル 2 の電話番号にマッピングして、テーブル 2 からデータを抽出したいと考えています。 .

表 2 には重複した電話番号があり、上記の条件に一致するすべての重複を抽出する必要があります。

4

2 に答える 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])

参照:この 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 |
于 2013-10-05T13:46:02.340 に答える
2

/*日付フィールドが有効な日付データ型であると仮定します*/

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]))
于 2013-10-05T14:11:23.383 に答える