选择每个客户最近的购买

时间:2013-10-15 01:25:33

标签: sql ms-access

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

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

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

1 个答案:

答案 0 :(得分: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