我被困在这个查询上几个小时,希望一个访问大师可以帮助我。
我正在使用另一个表(1到多个)向内部联接编写SELECT查询。我只需要获取最近日期的记录。我研究并尝试了许多不起作用的查询示例。
我最接近的就是这个
SELECT
tblData.RecentDate,
tblData.ID,
tblData.Name,
tblData.Address
FROM [table1]
INNER JOIN
( SELECT Top 1 *
FROM [table2] bh1
ORDER BY bh1.RecentDate DESC
) tblData
ON [table1].[ID] = tblData.[ID])
Top 1没有给我每个ID的记录。如果我删除Top 1,我会看到所有带有ID的记录,但我注意到RecentDate字段是空白的。如果我在查询中保留前1,则ID 1和4的记录不在结果中。
我也试过以下
INNER JOIN
( SELECT Max(bh1.RecentDate) as RecentDate, bh1.Name, branchhistory.Address, bh1.City,
FROM [table2] bh1
GROUP BY bh1.ID
) tblData
ON [table1].[ID] = tblData.[UDID]
此查询仅在我选择Max(bh1.RecentDate)为RecentDate,bh1.ID时有效 和bh1.ID组合...但我还有其他要获取的字段 添加到Group By并且不会仅返回1条记录。
从我的内部联接,我需要获取包含许多字段的记录并按最近的日期值获取。
我刚刚尝试了以下内容,但并非所有ID都会回来
INNER JOIN
( SELECT *
FROM [table2] bh1
WHERE bh1.RecentDate= (SELECT Max(bh2.RecentDate) from [table2] as bh2 WHERE bh1.ID = bh2.ID )
) tblData
ON [table1].[ID] = tblData.[ID]
非常感谢任何帮助。
由于
答案 0 :(得分:0)
将此保存为永久查询:
SELECT ID, Max(RecentDate) AS MaxDate FROM table2 GROUP BY ID
然后通过ID将表1连接到该查询,然后通过ID将表连接到table2并使用MaxDate = Recentdate