私は、以下で説明する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を使用しています。
[したい] ...利用可能な最後のレコードの日付を結合レコードとして使用する
導出された表で最初にそれを解決してください。 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)