2014-10-28 73 views
1

我试图通过第二计数来获得第一计数的百分比。换句话说,我想要做的NbFirstCallResolutions/TotalCases * 100SQL - 其他计数的百分比

SELECT 

(SELECT 
COUNT([Incident].IncidentId) 
FROM [Incident],[CaseResolution] 
WHERE [Incident].IncidentId = [CaseResolution].RegardingObjectId 
AND [CaseResolution].FirstCallResolution = 1 
AND [Incident].CreatedOn >= @Parameter_StartDate 
AND [Incident].CreatedOn <= DATEADD(day,1,@Parameter_EndDate) 
) AS NbFirstCallResolutions, 

(SELECT 
COUNT([Incident].IncidentId) 
FROM [Incident] 
WHERE [Incident].CreatedOn >= @Parameter_StartDate 
AND [Incident].CreatedOn <= DATEADD(day,1,@Parameter_EndDate) 
) AS TotalCases 

--SELECT NbFirstCallResolutions/TotalCases * 100.0 

不知道如何处理这一个...

+0

这是SQL Server吗?如果是这样,你不能以这种方式使用别名。只需划分你的两个查询,而不用担心别名 – paqogomez 2014-10-28 21:33:46

+0

这是SQL Server是 – RIvalZero 2014-10-28 21:36:19

回答

1

您的查询应该能够得到巩固这样的:

SELECT 
    SUM(coalesce([CaseResolution].FirstCallResolution, 0)/
    COUNT([Incident].IncidentId) * 100 
FROM 
    [Incident] 
    left join [CaseResolution] on 
      [Incident].IncidentId = [CaseResolution].RegardingObjectId 
      AND [CaseResolution].FirstCallResolution = 1 
WHERE 
    [Incident].CreatedOn >= @Parameter_StartDate 
    AND [Incident].CreatedOn <= DATEADD(day,1,@Parameter_EndDate 

请注意,我总结了1的值FirstCallResolution,空值为0.这相当于对行进行计数。

一定要检查您的操作顺序,因为我相信乘法会先发生,然后是除法。

+0

太棒了!谢谢! – RIvalZero 2014-10-28 21:55:32

+0

很高兴为您效力,请务必将其标记为已回答并注册,以便其他人可以知道它解决了您的问题。 – paqogomez 2014-10-31 23:11:55