나는 이상한 상황에 처해 있으며 그 방법에 대해 너무 자세하지 않습니다.TSQL 서로 다른 JOIN으로 같은 테이블을 사용하여 여러 번 계산
내가 2 개 별도의 테이블이 있습니다
표 A는 제출
id
submitterQID
nomineeQID
story
표 B는 직원
QID
Name
Department
내가 같은 부서로 그룹화 제출의 총 수를 얻기 위해 노력하고있다 총 후보 지명 수.
이 내 저장 프로 시저의 모습입니다 :이와
BEGIN
SELECT TOP 50 count(A.[nomineeQID]) AS totalNominations,
count(A.[subQID]) AS totalSubmissions,
B.[DepartmentDesc] AS department
FROM empowermentSubmissions AS A
JOIN empTable AS B
ON B.[qid] = A.[nomineeQID]
WHERE A.[statusID] = 3
AND A.[locationID] = @locale
GROUP BY B.[Department]
ORDER BY totalNominations DESC
FOR XML PATH ('data'), TYPE, ELEMENTS, ROOT ('root');
END
이 문제 만이 아니라 subQID
뿐만 아니라 nomineeQID
에 의해 합류 가입하기 때문이다.
내가 찾고 있어요 내 최종 결과는 다음과 같습니다
부서의 고객 서비스는 25 장의 사진과 90 개 후보 모두 계산의 합에 의해 주문
을 가지고 ... 난 그냥JOIN
다시하려
subQID
에 있지만 같은 테이블에 두 번 가입 할 수 없다고 들었습니다.
더 쉬운 방법이 있나요?
내가 가진 하나의 큰 문제는이 성능이다. 전체 employeeTable을보고있는 것처럼 보이고 제출 테이블에서 무언가를 찾으면 그 일을합니다. empTable에는 10,000 개가 넘는 레코드가 포함되어 있으므로 문제가 될지 궁금합니다. 테이블에서 코드를 실행하면 데이터가있는 모든 직원을 반환하려고했습니다. – SBB
아, 나는 부서를 놓쳤다. 어쨌든 부서별로 그룹화하기 위해 직원 기록을 반복해야하고 지명/제출 횟수를 받는다. 내 편집을 참조하십시오. –
성능에 관해서는 empowermentSubmissions.nomineeQID 및 empowermentSubmissions.locationID가 인덱스에서 쌍으로 구성되고 empowermentSubmissions.submitterQID 및 empowermentSubmissions.locationID가 인덱스에서 쌍으로 구성되는 경우이 작업이 정말 빠르다. 10K 기록은 문제가되어서는 안됩니다. –