2014-10-20 2 views
-1

다른 하위 쿼리에서 반환 된 행을 계산하여 개월의 하위 쿼리 카운트에 참여하려고합니다. 내 문제는 REP_ID (MONTH_COUNT 개)를 내 기본 쿼리에 참여시킬 수 있는지/모르겠습니다.카운트를 사용할 때 하위 쿼리에서 하위 쿼리 조인

INNER JOIN 
(SELECT COUNT(*) AS MONTH_COUNT 
FROM 
(
SELECT REP_ID, COUNT(MONTH(COMP_DT)) AS COUNT_ 
FROM dattbl_Case AS MONTH_ 
WHERE ([email protected]_TYPE) AND COMP_DT > DATEADD(MONTH,-12,GETDATE()) AND COMP_DT <= DATEADD(MONTH,-1,GETDATE()) 
GROUP BY MONTH(COMP_DT), REP_ID 
) AS MONTH__ 
) AS MONTHS_ 
ON EXPIRE_.REP_ID=? 
+1

WHOERE INNER JOIN 대신 WHERE EXPIRE_.REP_ID = MONTH_.REP_ID를 사용해 보았습니까? – kiks73

+0

유일한 옵션은 ON EXPIRE_REP_ID = MONTHS_.MONTH_COUNT에 가입하는 것입니다. 질문을 명확하게하십시오 !! –

+0

제 질문은 하위 쿼리의 하위 쿼리가 주 쿼리에 노출되지 않은 이유였습니다. 질문은 아주 분명했습니다. 내 대답을 보면 적절한 하위 쿼리 계층 구조를 참조하지 않은 것을 알 수 있습니다. – CliffyB

답변

1

난 당신이 원하는 생각 :

INNER JOIN 
(SELECT REP_ID, COUNT(DISTINCT MONTH(COMP_DT)) AS COUNT_ 
FROM dattbl_Case AS MONTH_ 
WHERE CASE_TYPE = @CASE_TYPE AND COMP_DT > DATEADD(MONTH, -12, GETDATE()) AND 
     COMP_DT <= DATEADD(MONTH,-1,GETDATE()) 
GROUP BY REP_ID 
) AS MONTHS_ 
ON EXPIRE_.REP_ID = MONTHS_.REP_ID 

이 제제는 달이 모두 같은 년 내에 있다고 가정합니다. 12보다 큰 수를 원하면 월과 월을 함께 입력해야합니다.

+0

부모 쿼리를 통해 REP_ID를 노출/참조하지 않았습니다. 그래도 고마워. – CliffyB

+0

@pcpimpster. . . 나는 당신의 의견을 이해하지 못합니다. 이게 니가하고 싶은게 아니야? –

+0

그냥 쿼리를 실행하고 예 수정 된 쿼리와 마찬가지로 작동합니다. 실제로는 더 간단합니다. 감사. 나는 사용하고 있던 추가 서브 쿼리에 너무 집중했다. 대답에 +1. – CliffyB

0

다음은 수정 된 해결책입니다. 나는 하위 쿼리를 부모 하위 쿼리에 노출하여 주 쿼리에 참가하지 않았습니다.

INNER JOIN 
(SELECT MONTH__.REP_ID, COUNT(*) AS MONTH_COUNT 
FROM 
(
SELECT MONTH_.REP_ID, COUNT(MONTH(COMP_DT)) AS COUNT_ 
FROM dattbl_Case AS MONTH_ 
WHERE ([email protected]_TYPE) AND COMP_DT > DATEADD(MONTH,-12,GETDATE()) AND COMP_DT <= DATEADD(MONTH,-1,GETDATE()) 
GROUP BY MONTH(COMP_DT), REP_ID 
) AS MONTH__ 
GROUP BY MONTH__.REP_ID 
) AS MONTHS_ 
ON EXPIRE_.REP_ID=MONTHS_.REP_ID 
관련 문제