오라클 컬럼 나누기 0 8 3,463

by 데미소다a [2014.12.19 10:30:36]


특정 테이블 tab 에 A, B, C, D 라는 컬럼이 있는데

A |       B      | C | D

----------------------------------

가| 1,1,2,3,4 | 나 | 다

B 컬럼에 1,1,2,3,4 이라는 데이터가 동적으로 입력되어 있습니다.

해당 테이블을 조회시

A | B_1 | B_2 | B_3 | B_4 | B_5 |   C  |  D

------------------------------------------------------------

가 |  1   |  1    |   2   |   3   |   4   |  나  |  다

라는 형식으로 출력하고 싶습니다.

아무리 검색을 하고 머리를 짜내봐도 방법이 없어 질문드립니다.

고수님들 도와주세요.

 

* 데이터 내용 추가했습니다.

by 아발란체 [2014.12.19 10:40:18]

이해가 조금 어렵네용ㅇ. 결과 예시에서 "가, 나, 다"는 어디서 나온 값들인가요?

결과를 내기 위한 테이블 데이타 예시도 있으면 도움이 될 것 같습니다.


by 데미소다a [2014.12.19 10:43:27]

데이터 예시 추가 했습니다 :)


by 신이만든짝퉁 [2014.12.19 10:49:32]
WITH DATA AS
     (SELECT '1,1,2,3,4' AS TEXT
        FROM DUAL)
SELECT REGEXP_SUBSTR(TEXT, '[^,]{1,}', 1, 1) B_1
     , REGEXP_SUBSTR(TEXT, '[^,]{1,}', 1, 2) B_2
     , REGEXP_SUBSTR(TEXT, '[^,]{1,}', 1, 3) B_3
     , REGEXP_SUBSTR(TEXT, '[^,]{1,}', 1, 4) B_4
     , REGEXP_SUBSTR(TEXT, '[^,]{1,}', 1, 5) B_5
  FROM DATA;

 

이렇게 해보세요.


by 데미소다a [2014.12.19 10:51:00]

거기까지는 검색을 통해 찾았는데 "," 숫자가 Where 조건에 따라서 달라져서요..

컬럼 숫자를 가변적으로 하려고 하거든요..


by 우리집아찌 [2014.12.19 10:52:15]

컬럼이 동적이면 그냥은 힘들것 같네요.

동적쿼리로 구현하셔야할듯합니다.

 

 


by 마농 [2014.12.19 10:56:35]

최대 가능한 갯수를 미리 확정하시고 구현하세요.


by 데미소다a [2014.12.19 11:44:19]

만약에 E 라는 컬럼을 추가하고 거기에 갯수를 입력해놓는다면 방법이 있을까요?


by 유령회원 [2014.12.21 03:58:13]

iBatis방식이나 IN 을 다이나믹하게 구성할수 있는 경우라면 pivot기능으로 되지 않을까.. 생각합니다.

저도 예전에 이 문제가지고 많이 고민했었는데 쿼리로만 만들어야한다면 pivot말고는 없을듯합니다.

첫번째로 B내용을 조회한다음 '1','1','2','3','4' 이렇게 가공한다음 이걸 다시 pivot쿼리에 적용하는거죠

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입