在 Microsoft Access 2010 中,我想运行一个查询,该查询仅列出每个客户最近购买的商品。这是我到目前为止的 SQL:

SELECT ClientNumber, DateOfPurchase
FROM ordersTable WHERE ClientNumber IN (
SELECT MAX(DateOfPurchase)
FROM ordersTable
GROUP BY ClientNumber
);

问题是这个查询没有返回任何数据,尽管它们是 ordersTable 中的相关数据。如何更改上面的代码以使其正常工作?

最佳答案

通常,您可以通过将表与自身连接来解决此问题:

SELECT o.ClientNumber, o.DateOfPurchase
FROM ordersTable o JOIN (
    SELECT MAX(DateOfPurchase) as MaxDateOfPurchase, ClientNumber
    FROM ordersTable
    GROUP BY ClientNumber
) t ON o.ClientNumber = t.ClientNumber AND o.DateOfPurchase = t.MaxDateOfPurchase

话虽如此,如果您没有选择任何其他字段,子查询将自行工作:
SELECT MAX(DateOfPurchase) as MaxDateOfPurchase, ClientNumber
FROM ordersTable
GROUP BY ClientNumber

编辑,假设您使用的是 MS Access,则在为列设置别名时可能需要关键字 AS

关于sql - 选择每个客户最近的购买,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19371877/

10-12 20:11