目前我有两个计数功能,1显示所有记录的计数,包括NULLS,另一个只显示具有值的记录。我希望能够计算pcf.ID的记录数,具体取决于它是哪个ca.ServiceID。所以例如,我只想计算pcf.IDs - 7,14,15,25为ca.ServiceID - 71.不确定这是否是我可以使用案例或从哪里开始。这可能在一个查询中吗?我需要将这些信息放入SSRS中的Matrix中,同时显示所有服务,不确定这是否对如何处理有任何不同。任何帮助都将受到大力赞赏:)
目前,第一个计数,计算所有记录和第二个计数,计算所有具有值的计数。我希望它根据服务ID计算值,如下所示。 如果serviceID为71,则只计算pcf.ID为7,14,15,25等的行,并返回计数值。并为所有不同的ServiceID执行此操作。
SELECT
COUNT(*)AS [CountAll]
,(COUNT(pcfd.LookupId) + (COUNT(pcfd.TextValue))) As [Answered]
,pcf.ID AS [Field_ID]
,ca.CourseID
,pcf.Label
,pcfd.TextValue
,pcfd.LookupId
,cs.ContractID
,Contract.Name AS [Contract Name]
,Service.Name AS [Service Name]
,ca.ServiceID
,p.ID
FROM
pcfd
INNER JOIN pcf
ON pcfd.pcfID = pcf.ID
INNER JOIN p
ON pcfd.pID = p.ID
INNER JOIN ca
ON p.ID = ca.pID
INNER JOIN Service
ON ca.ServiceID = Service.ID
INNER JOIN cs
ON Service.ID = cs.ServiceID
INNER JOIN Contract
ON cs.ContractID = Contract.ID
WHERE pcf.ID IN (7,14,15,25,12,8,24,23,22)
GROUP BY ca.pID
,ca.CourseID
,pcf.Label
,pcfd.TextValue
,pcfd.LookupId
,p.ID
,ca.ServiceID
,cs.ContractID
,cs.ServiceID
,Service.ID
,Contract.Name
,Service.Name
,pcf.ID
答案 0 :(得分:0)
您可以添加到select语句
,SUM(CASE WHEN pcf.IDs IN ( 7,14,15,25) AND ca.ServiceID = 71 THEN 1 ELSE 0 END) AS CountField