You need to eliminate hash join and Index scan.
With this query you can do that using INTERSECT AND EXCEPT
SELECT CustomerID
FROM #Purchase
WHERE ProductCode = 'A'
INTERSECT
SELECT CustomerID
FROM #Purchase
WHERE ProductCode = 'B'
EXCEPT
SELECT CustomerID
FROM #Purchase
WHERE ProductCode = 'C'
Or, this one using CTE AND JOINS:
;WITH CTE AS
(
SELECT CustomerID
FROM #Purchase
WHERE ProductCode = 'A'
GROUP BY CustomerID
)
,CTE2 AS
(
SELECT CustomerID
FROM #Purchase
WHERE ProductCode = 'B'
GROUP BY CustomerID
)
,CTE3 AS
(
SELECT CustomerID
FROM #Purchase
WHERE ProductCode = 'C'
GROUP BY CustomerID
)
select CTE.CustomerID from CTE
left join CTE3 ON
CTE.CustomerID = CTE3.CustomerID
where CTE.CustomerID in (SELECT CustomerID FROM CTE2)
AND CTE3.CustomerID IS NULL
GROUP BY CTE.CustomerID