SQL - ROW와 COLUMN 변환

Nobu90·2023년 8월 14일
1

SQL

목록 보기
8/8

행과 열 변환하기

합계를 가로로 출력하기(decode) - sum(decode(열, 행, 행 값) as 별명

예시)
select sum(decode(deptno, 10, sal, null)) as "10",
sum(decode(deptno, 20, sal, null)) as "20",
sum(decode(deptno, 30, sal, null)) as "30"
from emp

  • as 별명 - 숫자를 별명으로 명명할때는 ""을 사용한다.
  • 그룹 함수 연산에서 Null 값은 무시되므로 그룹 함수 (decode 등) 사용시 나머지 값은 0보다는 Null 값을 부여하는 것이 좋다.(생략 = Null)

합계를 가로로 출력하기(pivot) - select * 또는 행 이름 from (서브 쿼리) pivot ( sum for 열 이름 in 행 이름)

예시1)
select *
from (select deptno, sal from emp)
pivot (sum(sal) for deptno in (10, 20, 30))

  • pivot문 다음 select문이 실행되기 때문에 특정 행만 필요한 경우 행 이름은 select 문에 작성한다.

예시2)
select *
from (select job, sal from emp)
pivot (sum(sal) for job in ('PRESIDENT', 'MANAGER', 'SALESEMAN', 'CLERK', 'ANALYST'))

  • 'PRESIDENT'를 PRESIDENT로 출력하려면 'PRESIDENT' as "PRESIDENT"로 별칭을 추가한다.

열을 행으로 출력하기 - unpivot

0개의 댓글