Не уверен, какие поля существуют в dbo.Phone;но предположим, что число оттуда ... Вероятно, нужно присоединиться к таблице типов, чтобы получить ее описание ...
При этом используется общее табличное выражение для получения базового списка элементов, а затем коррелированногоподзапрос, чтобы убедиться, что отображаются только те возможности в вашем cte.
WITH CTE AS (
SELECT f.FacilityID as 'FID'
, COUNT (DISTINCT f.PhoneTypeID) as 'Ptypes'
, COUNT (DISTINCT f.PhoneID) as 'Pnumbers'
FROM dbo.FacilityPhones as f
GROUP BY f.FacilityID
HAVING COUNT(DISTINCT f.PhoneTypeID)<>COUNT(DISTINCT f.PhoneId))
SELECT *
FROM dbo.FaclityPhones FP
INNER JOIN dbo.Phones as ph
ON FP.PhoneID = ph.PhoneID
WHERE EXISTS (SELECT 1
FROM CTE
WHERE FID = FP.FacilityID)
Здесь в предложении where только указываются те FacilityID's и связанные записи, если FacilityID существует в вашем исходном запросе (CTE) (107) Если мынужны данные из CTE, к которым мы бы присоединились;но поскольку это просто ограничивает данные, размещение их в предложении where и использование существует, вероятно, будет более эффективным.