Я только что обнаружил оператор CROSS APPLY, и у меня сложилось впечатление, что он очень полезен при манипулировании производными столбцами для вычислений.
Итак, я попробовал следующее:
SELECT leadYear,TotalLeadsCalled,SuccessLeadsCalled,SuccessLeadsPercent
FROM dbo.tblBinOutboundCallActivity
CROSS APPLY(VALUES (YEAR(leadactivitydate))) AS a1(leadyear)
CROSS APPLY(VALUES (COUNT(leadStatusID))) AS a2(TotalLeadsCalled)
CROSS APPLY(VALUES (COUNT(CASE WHEN leadStatusID = 2 THEN 1 ELSE NULL END))) AS a3(SuccessLeadsCalled)
CROSS APPLY(VALUES (SUM((SuccessLeadsCalled/TotalLeadsCalled)*100))) AS a4(SuccessLeadsPercent)
GROUP BY leadYear
Но я получаю следующую ошибку:
Агрегаты с правой стороны APPLY не могут ссылаться на столбцы с левой стороны.
Я действительно не понимаю ошибку, тем более что первое перекрестное применение фактически работает изолированно. Я только что совершенно неправильно понял концепцию?