Согласно вашим комментариям вы хотели бы, чтобы рекламодатели имели как NULL, так и окончательный статус.
Это должно привести к желаемому результату. DISTINCT часто означает «я получаю дубликаты ... не знаю почему», обычно это скрывает фанатскую ловушку. В этом случае у вас может быть декартово произведение 'final' и NULL строк на рекламодателя.
SELECT DISTINCT A.Advertiser
FROM dbo.Rehenas_View_2 AS A,
dbo.Rehenas_View_2 AS B
WHERE A.[Final Status] IS NULL
AND B.[Final Status] = N'final'
AND A.Advertiser = B.Advertiser
ВНУТРЕННЕЕ СОЕДИНЕНИЕ 2 агрегатов:
SELECT Advertiser FROM
( SELECT Advertiser, COUNT(1) AS StatusCount
FROM dbo.Rehenas_View_2 WHERE [Final Status] IS NULL
GROUP BY Advertiser
HAVING StatusCount > 0) AS N,
(
SELECT Advertiser, COUNT(1) AS StatusCount
FROM dbo.Rehenas_View_2 WHERE [Final Status] = N'final'
GROUP BY Advertiser
HAVING StatusCount > 0) AS F
WHERE N.Advertiser = F.Advertiser
Другая идея состоит в том, чтобы использовать CASE и считать NULL и FINALS с одной GROUP BY / HAVING
SELECT Advertiser FROM
( SELECT Advertiser,
SUM(CASE WHEN [Final Status] IS NULL THEN 1 ELSE 0 END) AS NullCount,
SUM(CASE WHEN [Final Status] = N'final' THEN 1 ELSE 0 END) AS FinalCount
FROM dbo.Rehenas_View_2 WHERE [Final Status] IS NULL
GROUP BY Advertiser
HAVING NullCount > 0 AND FinalCount > 0)
У меня нет среды для проверки этого синтаксиса.