查找最新记录



在MS Access中,我有DateList表,它保存不同订单的到期日期。因此,该表有两列:OrderNo和DueDate。对于某些订单号,可能有多个duedate。表可能如下所示:

OrderNo DueDate
100     12/9/2021
101     20/9/2021
102     30/9/2021
100     7/10/2021
102     11/10/2021
103     15/10/2021
…

我的目标是编写一个查询来获取每个OrderNr的最新DueDate。

创建了两个查询;第一个qry1,生成一个没有重复的OrdNo列表:

SELECT  
DateList.OrderNo AS UniqOrderNo 
FROM DateList 
GROUPBY DateList.OrderNo;

第二个查询中的qry2,我使用DMax函数来搜索每个订单的DueDates的最大值。

SELECT 
qry1.UniqOrderNo
,DMax("[DueDate]","[DateList]","[OrderNo]='[qry1]![UniqOrderNo]'") AS LatDuDate
FROM qry1 
INNER JOIN DateList 
ON qry1.UniqOrderNo = DateList.OrderNo;

LatDuDate表示订单的最新DueDate。

查询是不幸的不工作,没有返回任何东西。

现在我的问题:

我的方法/查询有问题吗?

在MS Access中有更好的方法来完成这个任务吗?

你几乎自己弄明白了。Max返回组中最大的值。

SELECT Max(DueDate) DueDate, OrderNo
FROM DateList
GROUP BY OrderNo

与Christian的回答类似,但由于OrderNo是唯一的id,您可以简单地选择First()而不是分组-它执行得更好。* *

当然,这取决于表中保存的记录的数量。

SELECT First(OrderNo) AS OrderNo, Max(DueDate) AS DueDate
FROM DateList;

**来源:Allen Browne - optimization queries

相关内容

  • 没有找到相关文章

最新更新