如何在一个sql查询语句中获取彼此无关的两列数据?
我需要得到一个州级的服务数量计数。为此,我只有两项服务。第一列是状态,第二列是第一个服务,第三列是第二个服务。我所要做的是在一个查询中让结果显示第二列和第三列。这是我的密码:如何在一个sql查询语句中获取彼此无关的两列数据?,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我需要得到一个州级的服务数量计数。为此,我只有两项服务。第一列是状态,第二列是第一个服务,第三列是第二个服务。我所要做的是在一个查询中让结果显示第二列和第三列。这是我的密码: SELECT Distinct allstates.Name, count (data.StateName) as CareCase_Management_Services, count(data.StateName) Caregiver_Support_Services From (select distinct N
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
注意:在美国各州,你真的有重复的州名吗?如果否,您可以将子查询SELECT DISTINCT Name FROM USstate s替换为just USstate请提供示例数据和结果在加入AllState之前是否尝试按StateName对Client2017进行分组?Client2017是一个包含我想要的数据的表,AllState是另一个包含所有StateName的表。所以我不确定我是否理解你的问题@如果你能告诉我们结果应该是什么样子,AdánBucioit会更有意义。这很有效。谢谢@GMB,我以前也不得不删除所有州。Name@Rika我不能提供样品或结果,这是高度机密的数据
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