Если PropertyTypeId не равен NULL, вы можете сделать это с помощью одного соединения.Счет быстрее чем сумма.Но граф плюс присоединиться быстрее, чем сумма.Тестовый пример ниже имитирует ваши данные.В docSVsys содержится 800 000 строк, а для caseID есть около 300 уникальных значений.Подсчет плюс присоединение в этом тестовом случае немного быстрее, чем сумма.Но если я удалю с (nolock), то сумма будет примерно на 1/4 быстрее.Вам нужно будет проверить ваши данные.
select GETDATE()
go;
select caseID, COUNT(*) as Ttl,
SUM(CASE WHEN mimeType = 'message/rfc822' THEN 1 ELSE 0 END) as SFRCount,
SUM(CASE WHEN mimeType <> 'message/rfc822' THEN 1 ELSE 0 END) as OtherCount,
COUNT(*) - SUM(CASE WHEN mimeType = 'message/rfc822' THEN 1 ELSE 0 END) as OtherCount2
from docSVsys with (nolock)
group by caseID
having COUNT(*) > 1000
select GETDATE()
go;
select docSVsys.caseID, COUNT(*) as Ttl
, COUNT(primaryCount.sID) as priCount
, COUNT(*) - COUNT(primaryCount.sID) as otherCount
from docSVsys with (nolock)
left outer join docSVsys as primaryCount with (nolock)
on primaryCount.sID = docSVsys.sID
and primaryCount.mimeType = 'message/rfc822'
group by docSVsys.caseID
having COUNT(*) > 1000
select GETDATE()
go;