我有一个包含 Access 数据库中客户和产品信息的表:
custID product price
--------------------
1 objectA 12,5
1 objectB 54,51
1 objectC 14,85
2 objectE 188,84
2 objectC 14,85
2 objectD 188,84
从该表中,我想获得客户通过 SQL 购买的最昂贵的产品。我试过这个:
SELECT a.custID, a.product, max(a.price)
FROM orders AS a INNER JOIN orders AS b ON (a.custID=b.custID) AND (a.price<=b.price)
GROUP BY a.product, a.custID
HAVING count(*)<2;
结果是
1 objectB 54,51
它适用于最高价格仅出现一次但当两种产品具有相同(最高)价格时失败的所有情况。如何确保为每个客户获得结果?(我不关心客户 2 的 objectD 或 objectE 是否会这样做)。