MS Access SQL 从分组数据中提取最新日期的数据集

问题描述

我有以下 3 个表:第一个是客户的实际购买,第二个是客户对产品的报价 第三个显示客户对产品的任何兴趣(销售或报价)。

enter image description here

客户可能只是购买了产品,或者获得了报价但从不购买,或者获得了报价然后购买了产品。

我需要提取一个数据集,该数据集显示产品向客户出售或报价的最近日期。 所以,按 ProductCode 排序,我想要一个看起来像这样的数据集......

enter image description here

我可以在 sqlServer 中执行此操作,但在 MSAccess sql 中无法获得我想要的内容。 任何有关 MSAccess sql 的帮助将不胜感激。詹姆斯

解决方法

首先构建订单和报价的 UNION 查询:

SELECT [Date],CustomerID,ProductCode,"Order" AS Cat FROM SalesOrders
UNION SELECT [Date],"Quote" FROM Quotes;

在另一个查询中使用该查询为每个产品返回 TOP 1 记录:

SELECT * FROM OrdersQuotesUNION
WHERE [CustomerID] & [Cat] & [Date] In (
    SELECT TOP 1 CustomerID & Cat & [Date] FROM OrdersQuotesUNION AS Dup 
    WHERE Dup.ProductCode = OrdersQuotesUNION.ProductCode ORDER BY Date DESC)
ORDER BY OrdersQuotesUNION.ProductCode;