by 레브레카 [SQLServer] [2017.02.14 17:19:13]
일종의 통계 쿼리입니다.
각 쿼리는 서브쿼리 2개씩 사용
1서브가 기준으로 그룹 롤업 되어있는 상태
간단하게 예를들어 1번 쿼리 결과가 다음과 같고
구분 요청A 완료A
2번 쿼리도 요청/완료B 의 형태로 동일
행의 개수는 동일
구분 요청A 완료A 요청B 완료B
와 같은 형태로 합칠 수 있을까요?
구분이 같으면 값이 너무 불어버리네요....
서브쿼리1의 키 값으로 서브쿼리2의 특정 항목 이퀄 조건으로 LEFT조인되어있습니다....
쿼리를 안 적어주셔서 정확히 어떤 형태인지 모르겠는데 다음과 같은 방법으로 시도해보세요.
select gb , max(fg1) fg1 , max(fg2) fg2 , max(fg3) fg3 , max(fg4) fg4 from ( select gb, fg1, fg2, null fg3, null fg4 from table_a union all select gb, null fg1, null fg2, fg3, fg4 from table_b ) group by gb
유니온은 로우가 늘어나서...
로우 수는 기준 테이블돠 일치하고 변동되면 안되서...
무식하지만 with절 이용해서 조인 걸어버렸습니다....
글쎄요? 유니온을 통해 로우가 늘어나지만 다시 또 그룹바이로 로우를 합치기 때문에 문제 없습니다.
원본 테이블 자체가 다르다면? 조인이나 유니온 해야 하겠지만. 원본 테이블이 하나이고 조건만 다르다면? 조인이나 유니온 없이 피벗 형태로 쉽게 해결도 가능합니다.