피벗 함수 쓰는법을 알고 싶습니다 0 1 590

by 박성현장군님 [Oracle 기초] [2020.08.20 21:20:14]


값이 

매체  구분  값

1      a     15

1      b     20

1      c     10

2      a       4

2      b       5

2      c       6

이 테이블을 아래 처럼 매체 값을 컬럼으로 바꾸고

해당 태이블 처럼 바꿀수 있을까요? 

구분   1    2

a      15   4

b      20   5

c      10   6

by pajama [2020.08.20 22:08:21]

sum case를 사용했습니다.

with t as (
select 1 매체, 'a' 구분, 15 값 from dual
union all select 1 매체, 'b' 구분, 20 값 from dual
union all select 1 매체, 'c' 구분, 10 값 from dual
union all select 2 매체, 'a' 구분,  4 값 from dual
union all select 2 매체, 'b' 구분,  5 값 from dual
union all select 2 매체, 'c' 구분,  6 값 from dual
)
select 구분, 
       sum(case when 매체 = 1 then 값 else 0 end) col1,  
       sum(case when 매체 = 2 then 값 else 0 end) col2
from t
group by 구분

pivot 함수는 이렇게 쓰면 되는군요

with t as (
select 1 매체, 'a' 구분, 15 값 from dual
union all select 1 매체, 'b' 구분, 20 값 from dual
union all select 1 매체, 'c' 구분, 10 값 from dual
union all select 2 매체, 'a' 구분,  4 값 from dual
union all select 2 매체, 'b' 구분,  5 값 from dual
union all select 2 매체, 'c' 구분,  6 값 from dual
)
select *
 from t
pivot (sum(값) for 매체 in (1 as col1, 2 as col2)
);

 

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