Как получить два столбца данных, не связанных друг с другом в одном запросе SQL? - PullRequest
0 голосов
/ 12 февраля 2019

Мне нужно подсчитать на уровне штата количество услуг.Для этого у меня есть только две услуги.Первый столбец - это состояния, второй столбец - первые службы, а третий столбец - вторая служба.Я борюсь с тем, чтобы второй и третий столбцы отображались в результатах в одном запросе.Вот мой код:

SELECT Distinct allstates.Name, count (data.StateName) as  CareCase_Management_Services, count(data.StateName) Caregiver_Support_Services
From
 (select distinct Name from USstate) allstates
 Left Join
 Client2017 data
 on
 allstates.Name = data.StateName and
 data.FiscalYear = 2017 and 
 data.SrvstartCareCaseMgmtCode NOT IN('999','', '998') and 
 data.SrvstartCaregiverSuppCode NOT IN('999','', '998')
 GROUP BY allstates.Name
 ORDER BY allstates.Name ASC  

1 Ответ

0 голосов
/ 12 февраля 2019

Я понимаю, что вы хотите рассчитать для каждого штата количество услуг, соответствующих определенным критериям.Существует два типа сервисов, которые хранятся в двух разных столбцах.

Если это так, ваш запрос можно упростить, используя условное агрегирование :

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...