두 개의 비교적 복잡한 쿼리를 하나의 결과 집합으로 결합하려고합니다.두 개의 복잡한 SQL 쿼리에서 OUTER JOIN을 수행하는 방법은 무엇입니까?
결과 세트 1 :
SELECT sq.question_id,
COUNT(ra.question_option_id) AS TotalAnswers
FROM dbo.survey_question sq
LEFT OUTER JOIN dbo.question_option qo
ON sq.question_id = qo.question_id
LEFT OUTER JOIN dbo.form_response_answers ra
ON qo.question_option_id = ra.question_option_id
GROUP BY sq.question_id
결과 세트 2 :
SELECT p.program_id,
p.pre_survey_form_id,
p.post_survey_form_id,
fq.form_id,
sq.question_id,
sq.question_text,
qo.question_option_id,
qo.option_text,
G.Total
FROM dbo.program p
LEFT OUTER JOIN dbo.form_question fq
ON p.pre_survey_form_id = fq.form_id OR p.post_survey_form_id = fq.form_id
LEFT OUTER JOIN dbo.survey_question sq
ON fq.question_id = sq.question_id
LEFT OUTER JOIN dbo.question_option qo
ON sq.question_id = qo.question_id
LEFT OUTER JOIN (
SELECT ra.question_id, ra.question_option_id, COUNT(*) AS Total
FROM dbo.form_response_answers ra
GROUP BY ra.question_option_id, ra.question_id
) G
ON G.question_id = sq.question_id AND G.question_option_id = qo.question_option_id
ORDER BY p.program_id, fq.form_id, sq.question_id, qo.question_option_id
나는 행 question_id 경기에 그들과 합류해야합니다. 도와주세요.
CTE 또는 테이블 변수를 사용해 보셨습니까? – Romhein
좋아요, CTE를 사용해 보았는데 행운이 없었습니다. 하나의 CTE를 만들 수 있었지만 두 가지를 할 수는 없었습니다. 나는 아직도 이런 식으로 JOIN을 구현하는 방법을 몰랐다. 테이블 변수로 어떻게하면 될까요? – Darren