Используйте функции окна!
select o.*
from (select o.*,
max(price) over (partition by customer_id) as max_price
from (select o.*,
min(order_date) over (partition by o.customer_id) as first_order_date
from orders o
) o
where order_date < dateadd(year, 10, first_order_date)
) o
where price = max_price;
Я позволю вам присоединиться к таблице клиентов, чтобы получить имя и другую информацию о клиенте, которая вам может понадобиться.
Предполагается, что orders
имеет некоторый столбец customer_id
, как правило, такие таблицы создаются.