피벗 배열 질문(partition by..?) 0 4 3,883

by 유영주 [SQL Query] 피벗 종을 행으로 partition by [2012.08.15 16:35:09]


기억 상실증에 걸렸나봐요...
어제까지 짰던 쿼리가 기억이 안나네요...ㅠㅠ

표1) 원본 데이터

ID

MON

A

B

C

D

E

F

AA

01

43

11

AA

02

22

32

BB

01

12

52

63

BB

02

23

65

32

BB

03

11

32

5



표2) 가공 데이터

ID

MON

CODE

VAL

AA

01

A

43

AA

01

B

11

AA

02

A

22

AA

02

B

32

BB

01

A

12

BB

01

B

52

BB

01

C

63

BB

02

A

23

BB

02

B

65

BB

02

C

32

BB

03

A

11

BB

03

B

32

BB

03

C

5



작업내역은 표1) 의 데이터를 표2) 처럼 만들려고 합니다.

쿼리를 아래처럼 만들었던것 같은데.... 기억력 제로 네요..ㅠㅠ 도와주세요.. 고수님.

select id, mon,
   ROW_NUMBER() OVER (partition by ID ORDER BY ID, MON) rn
from   테이블명
by 솔밭 [2012.08.15 16:55:19]

http://www.gurubee.net/article/55193


WITH T(ID, MON, A, B, C) AS (
SELECT 'AA', '01', '43', '11', ''   FROM DUAL UNION ALL
SELECT 'AA', '02', '22', '32', ''   FROM DUAL UNION ALL
SELECT 'BB', '01', '12', '52', '63'    FROM DUAL UNION ALL
SELECT 'BB', '02', '23', '65', '32'    FROM DUAL UNION ALL
SELECT 'BB', '03', '11', '32', '5' FROM DUAL
)
SELECT *
FROM T
unpivot
(
    val
    for code in ("A", "B", "C")
)

by 유영주 [2012.08.15 17:58:15]

unpivot 은 11g 부터 사용하는 함수 인가요? ㅠ.ㅠ

제가 사용하는 버전이 10g 인데요..

by 마농 [2012.08.16 08:35:40]
WITH t(id, mon, a, b, c, d, e, f) AS
(
SELECT 'AA', '01', 43, 11, null, null, null, null FROM dual
UNION ALL SELECT 'AA', '02', 22, 32, null, null, null, null FROM dual
UNION ALL SELECT 'BB', '01', 12, 52,   63, null, null, null FROM dual
UNION ALL SELECT 'BB', '02', 23, 65,   32, null, null, null FROM dual
UNION ALL SELECT 'BB', '03', 11, 32,    5, null, null, null FROM dual
)
SELECT *
  FROM (
        SELECT id
             , mon
             , CHR(lv+64) code
             , DECODE(lv, 1, a, 2, b, 3, c, 4, d, 5, e, 6, f) val
          FROM t
             , (SELECT LEVEL lv FROM dual CONNECT BY LEVEL <= 6)
        )
 WHERE val IS NOT NULL
 ORDER BY id, mon, code
;

by JustinYJ [2012.08.16 09:44:23]
솔밭님, 마농님, 감사합니다.
 오라클의 세계는 대단하군요 ^^
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입