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
最高価格が 1 回だけ発生する場合はすべて問題なく機能しますが、2 つの製品の (最高) 価格が同じ場合は失敗します。顧客ごとに結果を確実に得るにはどうすればよいですか? (顧客2のobjectDまたはobjectEによるものかどうかは気にしません)。