2014-08-28 3 views
0

나는 다음과 같은 쿼리가의 SUM을 받고 총에 의해. 는 TSQL은 2 개의 별도 카운트

나는이 시도했다 그러나 나는 오류를 얻고 유지

집계 또는 하위 쿼리가 포함 된 식에서는 집계 함수를 수행 할 수 없습니다.

이 작업을 수행해야하는 구체적인 방법이 있습니까?

답변

2

그룹화중인 쿼리에서 집계 값을 사용하려면 전체 집계 함수를 열로 처리하십시오. 즉, COUNT(N.[nomineeQID])은 열입니다. 따라서 귀하의 경우에는 계산을 위해 2 개의 집계를 함께 추가하십시오. 우리가 이런 식으로 쿼리를 작성하는 경우, 그것은 "비싼"보일 수 있습니다 그런데

IF (@action = 'topDepartments') 
       BEGIN 
        SELECT TOP 50 E.[DepartmentDesc] AS department, 
            COUNT(N.[nomineeQID]) AS totalNominations, 
            COUNT(S.[subQID]) AS totalSubmissions, 
            COUNT(N.[nomineeQID]) 
            + COUNT(S.[subQID]) AS ALLSubmissions 
        FROM  empTable AS E 
          LEFT OUTER JOIN 
          empowermentSubmissions AS S 
          ON E.[qid] = S.[subQID] 
          LEFT OUTER JOIN 
          empowermentSubmissions AS N 
          ON E.[qid] = N.[nomineeQID] 
        WHERE N.[statusID] = 3 
          AND N.[locationID] = @locale 
        GROUP BY E.[DepartmentDesc] 
        ORDER BY totalSubmissions DESC 
        FOR  XML PATH ('data'), TYPE, ELEMENTS, ROOT ('root'); 
       END 

는, 그러나 옵티마이 저는 일반적으로는 계산을 다시 사용할 수 있음을 인식하고, 그래서 정말 보일 수만큼 나쁘지 않다 .

+0

완벽하게 작업했습니다. 감사합니다! – SBB

관련 문제