Вы можете попробовать следующее, если вы просто хотите список ProdCodes. Обратите внимание, что вы не предоставили нам никаких данных для удобного использования, поэтому я создал минимум для ответа на ваш вопрос.
CREATE TABLE #t1(Prodcode varchar(10),CommRate int)
INSERT INTO #t1 VALUES('00130', 10)
INSERT INTO #t1 VALUES('00130', 25)
INSERT INTO #t1 VALUES('00130', 28)
INSERT INTO #t1 VALUES('00130', 30)
INSERT INTO #t1 VALUES('00130', 50)
INSERT INTO #t1 VALUES('07053', 20)
INSERT INTO #t1 VALUES('07053', 25)
INSERT INTO #t1 VALUES('07053', 30)
INSERT INTO #t1 VALUES('07246', 20)
INSERT INTO #t1 VALUES('07246', 25)
INSERT INTO #t1 VALUES('07246', 30)
INSERT INTO #t1 VALUES('07246', 50)
SELECT Prodcode
FROM #t1
WHERE CommRate in (20,25,30)
GROUP BY Prodcode
HAVING COUNT(*) = 3
EXCEPT
SELECT DISTINCT ProdCode
FROM #t1
WHERE CommRate NOT IN (20,25,30)
Если вам нужно получить описания для всех этих строк и поместить их в CTE и присоедините его обратно к столу так:
;WITH CTE AS
(
SELECT Prodcode
FROM #t1
WHERE CommRate in (20,25,30)
GROUP BY Prodcode
HAVING COUNT(*) = 3
EXCEPT
SELECT DISTINCT ProdCode
FROM #t1
WHERE CommRate NOT IN (20,25,30)
)
SELECT tmp.*
FROM #t1 tmp
INNER JOIN CTE t2 on tmp.Prodcode = t2.Prodcode