SELECT 결과 열 합치기? 0 3 1,700

by 레브레카 [SQLServer] [2017.02.14 17:19:13]


일종의 통계 쿼리입니다.

각 쿼리는 서브쿼리 2개씩 사용

1서브가 기준으로 그룹 롤업 되어있는 상태

간단하게 예를들어 1번 쿼리 결과가 다음과 같고

구분  요청A  완료A

2번 쿼리도 요청/완료B 의 형태로 동일

 

행의 개수는 동일

구분  요청A  완료A  요청B  완료B

 와 같은 형태로 합칠 수 있을까요?

구분이 같으면 값이 너무 불어버리네요....

 서브쿼리1의 키 값으로 서브쿼리2의 특정 항목 이퀄 조건으로 LEFT조인되어있습니다....

 

by jkson [2017.02.14 18:12:32]

쿼리를 안 적어주셔서 정확히 어떤 형태인지 모르겠는데 다음과 같은 방법으로 시도해보세요.

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

 


by 레브레카 [2017.02.15 10:59:00]

유니온은 로우가 늘어나서...

로우 수는 기준 테이블돠 일치하고 변동되면 안되서...

무식하지만 with절 이용해서 조인 걸어버렸습니다....


by 마농 [2017.02.16 09:47:35]

글쎄요?
유니온을 통해 로우가 늘어나지만
다시 또 그룹바이로 로우를 합치기 때문에 문제 없습니다.


원본 테이블 자체가 다르다면?
조인이나 유니온 해야 하겠지만.
원본 테이블이 하나이고 조건만 다르다면?
조인이나 유니온 없이 피벗 형태로 쉽게 해결도 가능합니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입