在Microsoft Access 2010中,我想运行一个查询,该查询仅列出每个客户最近进行的购买。这是我到目前为止的SQL:
SELECT ClientNumber, DateOfPurchase
FROM ordersTable WHERE ClientNumber IN (
SELECT MAX(DateOfPurchase)
FROM ordersTable
GROUP BY ClientNumber
);
问题是这个查询没有返回任何数据,尽管它们是ordersTable中的相关数据。如何更改上面的代码以使其有效?
答案 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
。