Я бы предложил использовать ROW_NUMBER (). Это позволит вам ранжировать строки по выбранным столбцам и затем выбрать первый результат.
Если вы не указали ни данных, ни имен таблиц и столбцов,Пример на основе базы данных Adventureworks. Техника будет той же: вы делите то, что делает группу строк, которую вы хотите дедуплицировать, уникальной (ProductKey ниже) и упорядочиваете таким образом, чтобы версия, которую вы хотите сохранить первой (Children, birthdate и customerkey в моем примере).
USE AdventureWorksDW2017;
WITH CustomersOrdered AS
(
SELECT S.ProductKey, C.CustomerKey, C.TotalChildren, C.BirthDate
, ROW_NUMBER() OVER (
PARTITION BY S.ProductKey
ORDER BY C.TotalChildren DESC, C.BirthDate DESC, C.CustomerKey ASC
) AS CustomerSequence
FROM dbo.FactInternetSales AS S
INNER JOIN dbo.DimCustomer AS C
ON S.CustomerKey = C.CustomerKey
)
SELECT ProductKey, CustomerKey
FROM CustomersOrdered
WHERE CustomerSequence = 1
ORDER BY ProductKey, CustomerKey;