본문 바로가기
오래된글/DataBase

행을 열로 확장

by Andrew's Akashic Records 2018. 4. 15.
728x90

코드 테이블인 CO001T의 데이터 구조

Major

Minor

영업

가마니

영업

나오미

영업

마동탁

물류

사시미

물류

아사달

회계

자몽돌

회계

차이나

회계

카이로

전산

파김치


∴ 결과 집합

MAJOR

MINOR1

MINOR2

MINOR3

물류

사시미

아사달


영업

가마니

나오미

마동탁

전산

파김치



회계

자몽돌

차이나

카이로


∴ 문제

위 테이블의 데이터를 참조하여 결과집합을 구하는 SQL을 작성하시오. CO001T는 코드 테이블로 하나의 MAJOR 코드에 대하여 최대 3개의 MINOR 코드를 가질 수 있다.우리는 보고자 하는 것은 각 MAJOR 코드에 대하여 MINOR 코드 를 가로로 정렬하여 보고자 한다. 이때 MINOR 코드가 3개가 아닌 경우에 나머지는 공백으로 둔다.

테이블 생성 스크립트

CREATE TABLE CO001T (

MAJOR VARCHAR2 (6),

MINOR VARCHAR2 (10))

TABLESPACE ENCDATA

PCTFREE 10

PCTUSED 40

INITRANS 1

MAXTRANS 255

STORAGE (

INITIAL 40960

NEXT 40960

PCTINCREASE 50

MINEXTENTS 1

MAXEXTENTS 505

FREELISTS 1 FREELIST GROUPS 1 )

NOCACHE;


해결 쿼리

SELECT

A.MAJOR,

MAX(DECODE(R-R1,0,MINOR))MINOR1,

MAX(DECODE(R-R1,1,MINOR))MINOR2,

MAX(DECODE(R-R1,2,MINOR))MINOR3

FROM (SELECT ROWNUM R,

MAJOR, MINOR

FROM C0001T)A,

(SELECT MIN(ROWNUM)R1,MAJOR

FROM C0001T group by major)B

WHERE A.MAJOR = B.MAJOR

GROUP BY A.MAJOR


728x90

'오래된글 > DataBase' 카테고리의 다른 글

ANSI/X3/SPARC  (0) 2018.04.15
Analytical Function  (0) 2018.04.15
한달을 요일별로 구함  (0) 2018.04.15
인덱스 컬럼의 매칭율 높이는 방법  (0) 2018.04.15
옵티마이저의 Index 선택 기준  (0) 2018.04.15