row 데이타를 column 단위로 만드는 경우에 대해... 0 2 3,247

by 장형근 [2006.09.08 17:51:36]


안녕하세요

CODE_TYPE, CODE
A 1
A 2
A 3
B 1
B 2
B 3
B 4

의 데이타를 아래와 같이 만들려고 합니다.

A 1 2 3
B 1 2 3 4


SELECT CODE_TYPE
     , MAX(DECODE(RK, 1, CODE)) AS CODE1
     , MAX(DECODE(RK, 2, CODE)) AS CODE2
     , MAX(DECODE(RK, 3, CODE)) AS CODE3
     , MAX(DECODE(RK, 4, CODE)) AS CODE4
  FROM (SELECT CODE_TYPE, CODE, RANK() OVER(PARTITION BY CODE_TYPE ORDER BY CODE) AS RK
          FROM CODETABLE   
       )
 GROUP BY CODE_TYPE   ;


이렇게 했을 때 옆으로 늘려야 할 칼럼의 갯수를 미리 알고 처리를 해야 하는걸로 알고 있습니다.

그런데 그 가로의 갯수를 모르는 상태에서 유동적으로 칼럼의 길이를 늘릴 수 있는지. 알고 싶습니다.

생각으로는 안될거 같은데 방법이 있는건지요?

by 풍요로운 [2006.09.08 00:00:00]
똑같은 유형의 질문이 넘 많이 올라오네요
검색만 하셔도 원하는 답을 얻을텐데..

by 장형근 [2006.09.11 00:00:00]
관심 감사드립니다.

어디에 답변이 있다는건지요?

제 질문의 요지는 위의 경우에 한정되는게 아니라 CODE_TYPE 이 여러개 있고 각 CODE_TYPE별로 옆으로 데이타를 늘리려 할 때
, MAX(DECODE(RK, 4, CODE)) AS CODE4
이런 식으로 늘려야 될 칼럼을 동적(APP상에서 쿼리를 생성하는)으로 만드는게 아니라 SQL만으로 가능한지를 여쭙고 있습니다. ^^
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입