【问题标题】:Access Inner Join to select a record with the Max Date to distinctively select a record from another table访问 Inner Join 以选择具有 Max Date 的记录以区别地从另一个表中选择记录
【发布时间】:2016-10-09 06:04:23
【问题描述】:

我正在使用 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 查询工作并从另一个表中获取具有最大日期的记录?

感谢任何帮助。

谢谢

【问题讨论】:

    标签: sql ms-access


    【解决方案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];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-13
      • 1970-01-01
      • 2022-01-21
      • 2016-02-14
      • 2021-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多