Akashic Records

행을 열로 확장 본문

오래된글/DataBase

행을 열로 확장

Andrew's Akashic Records 2018. 4. 15. 22:22
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
Comments