select '10대' age, m10 male, f10 female from tbl union all
select '20대' age, m20 male, f20 female from tbl union all
select '30대' age, m30 male, f30 female from tbl union all
select '40대' age, m40 male, f40 female from tbl union all
select '50대' age, m50 male, f50 female from tbl union all
select '60대' age, m60 male, f60 female from tbl union all
select '70대' age, m70 male, f70 female from tbl
답변 감사드립니다.
UNION ALL 말고 다른 방법은 없을까요?
위의 데이터 형식이 테이블에 저장되어 있는 형식이 아니라 조건이 들어가서 SUM하여 나오는 결과인데 다 UNION 하기엔 시간이 너무 오래걸려서요...ㅠㅠ
나온 결과를 WITH 로 묶어서 사용하시면 될 듯 한데요
WITH TBL AS (
중간결과 Query
)
SELECT ..... UNION ALL
SELECT .... UNION ALL
SELECT .... FROM TBL
with t as
(
select 100 m10, 131 m20, 150 m30, 350 m40, 210 m50, 220 m60, 100 m70
, 200 f10, 150 f20, 300 f30, 350 f40, 170 f50, 150 f60, 80 f70
from dual
)
select substr(age,2,2)||'대' age, mval, fval
from t
unpivot ((mval, fval) for age in ((m10, f10),(m20,f20),(m30,f30),(m40,f40),(m50,f50),(m60,f60),(m70,f70)))
아 이미 늦었네 ㅡㅡ
(가공결과 > 최종결과) 로 만드는 방법 질문하셨는데요?
(가공결과 > 최종결과) 로 만드는 방법이 (원본집합 > 최종결과) 로 만드는 방법보다 오히려 더 어려울 수 있습니다.
(원본집합 > 최종결과) 로 뽑는게 훨씬 더 쉬울 듯 하네요.
SELECT 나이대
, COUNT(DECODE(성별, '남', 1)) 남자
, COUNT(DECODE(성별, '여', 1)) 여자
FROM 원본집합
GROUP BY 나이대
;