2014-10-28 76 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