我需要加入两个如下所述的表:
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中的记录加入表1中由相同ID,月,年标识的记录,但使用最后一个可用记录日期作为加入记录。因此,例如,在上面的数据中,我将表2中的记录加入表1中的第二条记录,因为它们在ID,月,年和表1的记录2中匹配具有最大的可用日期(ID,月,年)组合。正确的结果是:
ID日期Info1 Info2
1 1/30/2011 i11 i2
到目前为止,我提出的SQL代码非常令人费解。请提出建议。我正在使用MySQL。
答案 0 :(得分:2)
[我想] ...使用最后一个可用的记录日期作为加入记录
首先使用派生表解决这个问题。假设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)