3

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

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

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

4

1 回答 1

2

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

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在为列设置别名时可能需要关键字。

于 2013-10-15T01:30:30.913 回答