2

原則として、2つのテーブルT1とT2があり、それぞれに日付フィールドが含まれています。これを日付と呼びます。

T1: date | somekey  | data ... 
T2: date | somekey  | data ...

(left)join T1 and T2結果にT1からのすべての行が含まれるようにします。

ABS(DATEDIFF(T1.date,T2.date))ここで、T1の各行について、最小であるT2の(正確に1つの)行からの値が必要です(T2にT1.somekey=T2.somekeyそのような行がない場合はnull)

4

1 に答える 1

0

条項に含めるのではなく、JOIN条項に入れるだけWHEREです。

SELECT
*
FROM
T1
LEFT JOIN T2 ON T1.somekey = T2.somekey
WHERE
ABS(DATEDIFF(T1.date,T2.date)) = 1 /*or whatever "minimal" means for you*/
/*or like this:*/                < $yourMinimalValue

編集:

私はあなたがやりたいことを理解していると思いますが、サブクエリはここに行く方法です:

SELECT
*
FROM
T1
LEFT JOIN T2 ON T1.somekey = T2.somekey
WHERE
ABS(DATEDIFF(T1.date,T2.date)) = (SELECT MIN(DATEDIFF(TT1.date, TT2.date)) FROM  T1 AS TT1 LEFT JOIN T2 AS TT2 ON TT1.somekey = TT2.somekey)
于 2012-06-12T08:27:34.573 に答える