相関サブクエリ、SQLに基づく表の結合

私は、以下で説明する2つのテーブルを結合する必要があります:

Table1:
ID  Date       Info1
1   1/29/2011     i10
1   1/30/2011     i11


Table2:
ID  Date       Info2
1    1/31/2011   i2

ID、月、年によって識別される表2のレコードを、同じID、月、年によって識別される表1のレコードに結合することを残したいが、最後に利用可能なレコード日付を結合レコードとして使用する。例えば、上記のデータでは、表1の2番目のレコードにID、月、年が一致し、表1のレコード2が最も利用可能な日(ID、月、年)の組み合わせ。正しい結果は次のとおりです。

ID日付情報1情報2

     

1 1/30/2011 i11 i2

私が今までに登場するSQLコードはかなり複雑です。何かお勧めします。私はMySQLを使用しています。

0
あなたは何を持っているのですか?
追加された 著者 Nathan Feger,

1 答え

[したい] ...利用可能な最後のレコードの日付を結合レコードとして使用する

導出された表で最初にそれを解決してください。 ID、Date が一意であると仮定すると、IDで簡単にグループ化してMAXの日付を取ることができます。

SELECT
   T1.*,
   T2.*
FROM Table1 as T1
JOIN (
   SELECT 
      ID, MAX(Date) as Date
   FROM Table1
   GROUP BY 
      ID
) as Last ON
   T1.ID = Last.ID
   AND T1.Date = Last.Date
LEFT OUTER JOIN Table2 as T2 ON
   T1.ID = Last.ID
   AND MONTH(T1.Date) = MONTH(T2.Date)
   AND YEAR(T1.Date) = YEAR(T2.Date)
2
追加された