Я бы использовал ROW_NUMBER
здесь:
SELECT CustID, CustName, SaleID, DatePurchase, Amount
FROM
(
SELECT c.*, s.SaleID, s.DatePurchase, s.Amount,
ROW_NUMBER() OVER (PARTITION BY c.CustID ORDER BY s.DatePurchase DESC) rn
FROM customer c
LEFT JOIN sales s
ON c.CustID = s.CustID
) t
WHERE t.rn = 1;
Обратите внимание, что те клиенты, у которых вообще нет записей о продажах, сообщат NULL
об идентификаторе продажи, дате покупки и сумме.Мы могли бы заменить их заполнителями, используя COALESCE
, если необходимо.