database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 41663 게시물 읽기
No. 41663
행 컬럼 데이터 열 (세로)로 구분하여 구하는 쿼리 질문 드립니다.
작성자
양정훈(dduho75)
작성일
2018-12-04 11:42ⓒ
2018-12-05 22:44ⓜ
조회수
2,963

 안녕하세요.

a테이블에 아래와 같이 데이터가 있을 경우  

a1    a2    a3            a4

                            |-----12-----|------12----|----12----|-----12----|-------12----|-----12-----| 

01    lg     홍길동     aa11aa      bb22bb      cc33        dd4         ee55ee55    ff66ff     

                                    |--6--|          |-6-|       |--8--|     |---9--|           |-4-|       |---6---|      

01    hp    아무개     11aa        22bb22     

01    ibm   거시기      abcdefg33   bbccee      fijk1010   

a4컬럼에 데이타가 12byte 로 되어 있으며 12byte 아닐경우 공백으로 채워져 구분되어져 있습니다.

아래와 같은 결과 값을 구하고 싶습니다. 

어떻게 해야 가능 할까요..???

 

결과

 

a1               a2               a3               a4

 01               lg                 홍길동        aa11aa

 01               lg                 홍길동        bb22bb

 01               lg                 홍길동        cc33

 01               lg                 홍길동        dd4

 01               lg                 홍길동        ee55ee55

 01               lg                 홍길동        ff66ff 

 01               hp                아무개        11aa 

 01               hp                아무개        22bb22

 01               ibm              거시기        abcdefg33

 01               ibm              거시기        bbccee

 01               ibm              거시기        fijk1010

 

이 글에 대한 댓글이 총 3건 있습니다.
WITH T(A1, A2, A3, A4) AS (
SELECT '01', 'lg', '홍길동', 'aa11aa      bb22bb      cc33        dd4         ee55ee55    ff66ff' FROM DUAL UNION ALL
SELECT '01', 'hp', '아무개', '11aa        22bb22' FROM DUAL UNION ALL
SELECT '01', 'ibm', '거시기', 'abcdefg33   bbccee      fijk1010' FROM DUAL )
SELECT DISTINCT M.A1
            , M.A2
            , M.A3
            , REGEXP_SUBSTR( M.A4, '[^|]+', 1, LEVEL ) AS COL
  FROM ( SELECT A1, A2, A3, REGEXP_REPLACE( A4, '( ){1,}', '|' ) AS A4
                   FROM T
                WHERE 1 = 1 ) M
CONNECT BY REGEXP_SUBSTR( M.A4, '[^|]+', 1, LEVEL ) IS NOT NULL
 ORDER BY A1, A2, A3
Null(nvl)님이 2018-12-04 19:08에 작성한 댓글입니다.
이 댓글은 2018-12-05 09:16에 마지막으로 수정되었습니다.

WITH t AS
(
SELECT '01' a1, 'lg' a2, '홍길동' a3
, 'aa11aa      bb22bb      cc33        dd4         ee55ee55    ff66ff      ' a4 FROM dual
UNION ALL SELECT '01', 'hp' , '아무개', '11aa        22bb22      '              FROM dual
UNION ALL SELECT '01', 'ibm', '거시기', 'abcdefg33   bbccee      fijk1010    '  FROM dual

)
SELECT a1, a2, a3
     , lv
     , TRIM(SUBSTR(a4, lv*12-11, 12)) a5
  FROM t
     , (SELECT LEVEL lv FROM dual CONNECT BY LEVEL <= 9)
 WHERE lv <= LENGTH(a4)/12
 ORDER BY a1, a2, a3, lv
;
 

마농(manon94)님이 2018-12-06 11:02에 작성한 댓글입니다.
이 댓글은 2018-12-06 11:03에 마지막으로 수정되었습니다.

 댓글 감사합니다.

초보라 앞이 캄캄했는데 덕분에 어려웠던 부분을 해결한듯 합니다.

 

양정훈(dduho75)님이 2018-12-07 16:54에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
41666복구할 db가 .dbf만 남아있는데, 새로 설치한 동일 버전 오라클 db로 옮겨서 복원 시킬 수 있을까요? [1]
어둠숲
2018-12-13
2459
41665맥북 부트캠프 오라클 쿼리박스 에러 도와주세요.. [1]
유지예
2018-12-11
3552
41664ROLLBACK이 안됩니다. [2]
빌다크홈
2018-12-10
2572
41663행 컬럼 데이터 열 (세로)로 구분하여 구하는 쿼리 질문 드립니다. [3]
양정훈
2018-12-04
2963
41662데이터 순위 부여...궁금해요(예시수정) [3]
오라클ㅇ
2018-12-03
2649
41661dbms_jobs에서 interval이 다음날 1일에 도는 이유가 뭘까요?
trikepton
2018-12-03
2617
41660테이블조회결과를 한줄로변경? 문의.. [2]
배움이
2018-11-27
3004
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.047초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다