database/oracle
행을 열로 정렬
아이짱구
2009. 2. 5. 15:37
CO001T 테이블은 코드 테이블로 하나의 MAJOR 코드에 대하여 최대 3개의 MINOR 코드를 가질 수 있다. 우리는 보고자 하는 것은 각 MAJOR 코드에 대하여 MINOR 코드 를 가로로 정렬하여 보고자 한다. 이때 MINOR 코드가 3개가 아닌 경우에 나머지는 공백으로 둔다.
테이블 생성 스크립트
CREATE TABLE CO001T (
MAJOR VARCHAR2 (6),
MINOR VARCHAR2 (10)
);
-------------------------------------------
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