我正在使用Access并编写查询来连接另一个具有多个具有相同ID的记录的表。因此,我只需要使用MAX日期获取记录以仅获取1条记录。我一直收到语法错误。
这是我对另一张桌子的正常内部加入:
SELECT
table2.NameDesc,
FROM [table1]
INNER JOIN
(
SELECT [MyDataTable].[ID], [MyDataTable].[NameDesc], MAX( [MyDataTable].[MyDate]) as RecentDate
FROM [MyDataTable]
GROUP BY [MyDataTable].[ID]
) table2
ON [table1].[ID] = table2.[ID];
通常在我的内部联接声明中,我这样写:
INNER JOIN [table3] ON [table1].[ID] = [table3].[ID])
所以我需要在MAX日期只获取1条记录。我终于能够了 单击“保存”但是当我单击DateSheetView时,出现以下错误:
"Your query does not include the specified expression "NameDesc" as part of an aggregate function"
我是[]括号的访问查询,与sql server不同。
如何让这个Access查询工作并从另一个表中获取具有最大日期的记录?
任何帮助都是适用的。
由于
答案 0 :(得分:1)
当您使用聚合函数(如MAX)时,您需要包含作为组的一部分返回的所有其他列。为了使查询无错误地运行,您可以这样做:
SELECT
table2.NameDesc
FROM [table1]
INNER JOIN
(
SELECT [MyDataTable].[ID],
[MyDataTable].[NameDesc],
MAX([MyDataTable].[MyDate]) as RecentDate
FROM [MyDataTable]
GROUP BY [MyDataTable].[ID],
[MyDataTable].[NameDesc]
) table2
ON [table1].[ID] = table2.[ID];