Вы можете использовать условное агрегирование:
SELECT
COUNT(DISTINCT CASE WHEN DateVerified IS NULL
THEN c.ContactRef END) AS UnverifiedEmails,
COUNT(DISTINCT CASE WHEN DateVerified IS NOT NULL
THEN c.ContactRef END) AS VerifiedEmails,
COUNT(DISTINCT CASE WHEN DateVerified IS NOT NULL AND
DATEPART(m, e.DateAdded) = DATEPART(m, DATEADD(m, -1, GETDATE()))
THEN c.ContactRef END) AS LastMonthVerified,
COUNT(DISTINCT CASE WHEN DateVerified IS NULL AND
DATEPART(m, e.DateAdded) = DATEPART(m, DATEADD(m, -1, GETDATE()))
THEN c.ContactRef END) AS LastMonthUnverified
FROM ContactEmailAddressVerification c
LEFT JOIN EmailAddressVerification e
ON e.EmailAddressVerificationID = c.EmailAddressVerificationID;
Идея состоит в том, чтобы сделать один проход по объединенным таблицам, а затем условно взять суммы / суммы, в зависимости от логики в каждом из * 1004.* пункты вашего исходного запроса.