참고
Pivoting
- 세로로 나열된 여러 행을 가로(열)로 나열한다. (SQL 개발환경의 쿼리 실행창 기준)
- 하나의 열 내에 있는 여러 행을 여러 개의 열 또는 배열로 변환하는 것
- 혹은 특정 열들의 값을 기준으로, 각 열 내의 값 종류를 컬럼으로 (중복제거)하여 데이터를 재배치하는 것
- 예시: GENDER 컬럼(값 종류: 'MAN', 'WOMAN')
=> 'MAN', 'WOMAN'이 각각 컬럼이 된다.
CROSSTAB
모듈 설치
CREATE EXTENSION IF NOT EXISTS tablefunc;
예제 테이블
CREATE TABLE tbl (
SECTION TEXT
, STATUS TEXT
, CNT INTEGER
);
INSERT INTO tbl VALUES
('A', 'Active', 1), ('A', 'Inactive', 2)
, ('B', 'Active', 4), ('B', 'Inactive', 5)
, ('C', 'Inactive', 7); -- ('C', 'Active')가 없음
CROSSTAB(TEXT)
- 비권장사항
- 데이터가 잘못된 위치에 삽입될 수 있음
SELECT *
FROM CROSSTAB(
'SELECT SECTION, STATUS, CNT
FROM tbl
ORDER BY 1, 2'
) AS T ("Section" TEXT, "Active" INT, "Inactive" INT);