데이터베이스 개발자 질문과 답변 게시판
지역별로 수도합계금액을 산출할려고합니다.
쿼리는 모두 만들어 놓은 상태입니다.
지금 하려는 작업이 한 화면에 서울,부산,대전,대구...등으로 수도합계금액을 보여주려고하는데요
현재 덩어리로 지역별로 수도합계금액을 다 구해버렸습니다.
그래서 이 덩어리들을 한덩어리로 만드는 작업이 필요한데요..
생각하는 방향은
select 서울,부산,대구....
from(덩어리1 inner join 덩어리2 inner join 덩어리3 )
위와같이 구현을 해서 한화면에 보여지게 하려는데.. 잘안되네요
소스를 보여드리지 못하는점 이해해주시고요.
덩어리들을 모아서 하나의 select문에서 보여주기 위한 쿼리 개념 설명을 좀 부탁드리겠습니다.
기본개념만 가르쳐주시면 공부해서 만들어볼게요..^^;;
Comment 8
-
건우아빠
2013.02.27 18:34
-
q0822kang
2013.02.27 18:52
union all을 사용 했을 때 order by는 사용할 수 없나요?
union all 사용 시 옆으로 값이 나오게끔 하는 옵션이 있습니까
-
치맥
2013.02.28 09:17
union all 사용시
select
..
union all
select
..
order by
처럼 마지막에만 order by 사용할 수 있습니다.
-
방랑도사
2013.02.27 18:54
덩어리들끼리 관계가 없는데, 억지로 조인할려니 어렵겠지요. 건우아빠님 말씀처럼 union all 후 group 지으면 됩니다.
초간단 예로..
SELECT A=SUM(서울),B=SUM(부산)
FROM (select 서울=123 ,부산=0
union all
select 서울=0, 부산=4354 ) T1 -
q0822kang
2013.02.27 19:09
예 union all 하니깐 합쳐져서 에러는 없습니다.
근데 어느부분에서 잘못되었는지.. 첫번째 덩어리의 퀄럼밖에 참조가 되지않네요.
select 서울, 서울 합계, 대구, 대구합계, 부산, 부산합계...
from(
select 서울, 서울 합계....
union all
select 대구, 대구합계...
.....
)
위와 같을 경우 대구, 대구합계 컬럼이 참조가 되지 않습니다.
-
항해자™
2013.02.27 19:19
case 문을 적절히 사용하면 되겠네요,,,
sum(case 첫열이름 when '서울' then 합계 else 0 end) as [서울합계]
,sum(case 첫열이름 when '대전' then 합계 else 0 end) as [대전합계]
.....
-
q0822kang
2013.02.28 10:47
union all을 사용 했을 때
데이터 값들이 가로가 아닌 세로로 나오는 형식이더군요.
서울 서울합계
대구 대구합계
부산 부산합계
...
이런식으로 말이죠
화면에 가로방식으로
서울 서울합계 대구 대구합계 부산 부산합계
상위와 같이 가로로 나올 수 있는 방법이 있을까요?
-
방랑도사
2013.02.28 11:54
SELECT 서울=MIN(서울),서울합계=SUM(서울합계),부산=MIN(부산),부산합계=SUM(부산합계),대구=MIN(대구),대구합계=SUM(대구합계)
FROM (select 서울='서울',서울합계=123 ,부산='부산',부산합계=0,대구='대구',대구합계=0
union all
select 서울='서울',서울합계=0 ,부산='부산',부산합계=222,대구='대구',대구합계=0
union all
select 서울='서울',서울합계=0 ,부산='부산',부산합계=0,대구='대구',대구합계=333) T1
union all 로 각각의 덩어리를 붙여서 하시면 됩니다...