这些会起作用。
仅使用应用:
SELECT leadYear,TotalLeadsCalled,SuccessLeadsCalled,SuccessLeadsPercent
FROM dbo.tblBinOutboundCallActivity a
CROSS APPLY (SELECT YEAR(leadactivitydate) leadyear FROM dbo.tblBinOutboundCallActivity WHERE YEAR(leadactivitydate) = YEAR(a.leadactivitydate)) a1
CROSS APPLY (SELECT COUNT(leadStatusID) TotalLeadsCalled FROM dbo.tblBinOutboundCallActivity WHERE YEAR(leadactivitydate) = a1.leadyear) a2
CROSS APPLY (SELECT COUNT(CASE WHEN leadStatusID = 2 THEN 1 ELSE NULL END) SuccessLeadsCalled FROM dbo.tblBinOutboundCallActivity WHERE YEAR(leadactivitydate) = a1.leadyear) a3
CROSS APPLY (SELECT 100.*SuccessLeadsCalled/TotalLeadsCalled SuccessLeadsPercent) a4
GROUP BY leadYear,TotalLeadsCalled,SuccessLeadsCalled,SuccessLeadsPercent
CTE & 应用:
WITH Years AS
(
SELECT YEAR(leadactivitydate) leadyear
FROM dbo.tblBinOutboundCallActivity
GROUP BY YEAR(leadactivitydate)
)
SELECT leadYear,TotalLeadsCalled,SuccessLeadsCalled,SuccessLeadsPercent
FROM Years
CROSS APPLY (SELECT COUNT(leadStatusID) TotalLeadsCalled FROM dbo.tblBinOutboundCallActivity WHERE YEAR(leadactivitydate) = leadyear) a2
CROSS APPLY (SELECT COUNT(CASE WHEN leadStatusID = 2 THEN 1 ELSE NULL END) SuccessLeadsCalled FROM dbo.tblBinOutboundCallActivity WHERE YEAR(leadactivitydate) = leadyear) a3
CROSS APPLY (SELECT 100.*SuccessLeadsCalled/TotalLeadsCalled SuccessLeadsPercent) a4