질문있습니다!! 0 1 1,218

by 도지니 [2016.11.29 09:43:27]


A란 테이블에 

이름 | 번호 | 나이 | 직급 | 월급 | 월급지급월 

  A      1       30     B       500    2012.02

  A      1       30     B       650    2012.03

  A      1       30     B       620    2012.04

  A      1       30     B       530    2012.05

  A      1       30     B       510    2012.06

  A      1       30     B       490    2012.07

이 데이터를
이름|번호|나이|직급|201202|201203|201204.......

 A      1    30   B     500      650   530  .... 

 

이렇게 표현가능할까요? DECODE 함수가 아닌 UNION ALL 이나 등등.. 방법이 궁금합니다!

by jkson [2016.11.29 10:40:28]

decode함수가 아니라는 말씀은 select max(decode(col6,'2012.02',col5)) .. group by col1, col2, col3, col4 요런 방법 말고 다른 방법 말씀하시는 거죠? pivot 써보세요.

with t as
(
select 'A' col1, '1' col2,  '30' col3, 'B' col4,  '500' col5, '2012.02' col6 from dual union all
select 'A' col1, '1' col2,  '30' col3, 'B' col4,  '650' col5, '2012.03' col6 from dual union all
select 'A' col1, '1' col2,  '30' col3, 'B' col4,  '620' col5, '2012.04' col6 from dual union all
select 'A' col1, '1' col2,  '30' col3, 'B' col4,  '530' col5, '2012.05' col6 from dual union all
select 'A' col1, '1' col2,  '30' col3, 'B' col4,  '510' col5, '2012.06' col6 from dual union all
select 'A' col1, '1' col2,  '30' col3, 'B' col4,  '490' col5, '2012.07' col6 from dual
)
select * from t
pivot (max(col5) val for col6 in ('2012.02' mon02,'2012.03' mon03,'2012.04' mon04,'2012.05' mon05, '2012.06' mon06,'2012.07' mon07))

 

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