Я понимаю, что вы хотите рассчитать для каждого штата количество услуг, соответствующих определенным критериям.Существует два типа сервисов, которые хранятся в двух разных столбцах.
Если это так, ваш запрос можно упростить, используя условное агрегирование :
SELECT
allstates.Name,
SUM(CASE WHEN c.SrvstartCareCaseMgmtCode NOT IN ('999', '', '998') THEN 1 ELSE 0 END) CareCase_Management_Services,
SUM(CASE WHEN c.SrvstartCaregiverSuppCode NOT IN ('999', '', '998') THEN 1 ELSE 0 END) Caregiver_Support_Services
FROM
(SELECT DISTINCT Name FROM USstate) s
LEFT JOIN Client2017 c ON s.Name = c.StateName AND c.FiscalYear = 2017
GROUP BY allstates.Name
С помощью этого методакаждая услуга рассчитывается в соответствии со своей логикой;когда выполняются условия, запись засчитывается в (1
добавляется к SUM()
), в противном случае она игнорируется (+ 0
).
Примечание: действительно ли у вас есть дублированные имена состояний в USstate
?если нет, вы можете заменить подзапрос (SELECT DISTINCT Name FROM USstate) s
просто USstate