Добавьте предложение EXISTS
для проверки любых записей без отношения:
SELECT Name, CustomerNumber, COUNT(*) As DupeCount
FROM StagingCustomers S
WHERE ManufacturerID=15
AND NOT EXISTS (SELECT 1 from Orders WHERE CustomerID = S.CustomerID)
GROUP BY Name, CustomerNumber
HAVING COUNT(CustomerNumber) > 1
ORDER BY CustomerNumber
EDIT:
Пример того, как удалить записи ниже. Это установит IsDeleted
в 1 для каждой записи, которая соответствует вышеуказанным критериям, И не является самым низким customerid
на CustomerNumber
. Чтобы получить более четкий ответ, вам необходимо указать расположение и отношения к вашему столу.
UPDATE S
SET IsDeleted = 1
FROM StagingCustomers S
WHERE ManufacturerID=15
AND NOT EXISTS (SELECT 1 from Orders WHERE CustomerID = S.CustomerID)
AND CustomerID NOT IN (SELECT CustomerNumber, MIN(CustomerID)
FROM StagingCustomers
GROUP BY CustomerNumber)
GROUP BY Name, CustomerNumber
HAVING COUNT(CustomerNumber) > 1
ORDER BY CustomerNumber