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 40587 게시물 읽기
No. 40587
분류명만 있는 데이터를 부모 일련번호를 포함한 데이터로 가공해야 하는데 도와주세요.
작성자
김성욱(owllab)
작성일
2014-10-14 20:58
조회수
6,739

원본 데이터는 아래와 같습니다.

============= 원 본 ==============

WITH t AS

(

SELECT '총무/넷메신저' category FROM dual

UNION ALL SELECT '총무/전화사용법' FROM dual

UNION ALL SELECT '총무' FROM dual

UNION ALL SELECT '인사' FROM dual

UNION ALL SELECT '인사/구인' FROM dual

UNION ALL SELECT '인사/성희롱 예방교육' FROM dual

UNION ALL SELECT '인사/4대보험' FROM dual

)

select * from t;

 

결과는 아래와 같이 나와야 합니다.

=============== 가공 데이터 ============

WITH t AS

(

SELECT null parent_seq, 1 seq, null parent_category, '인사' category FROM dual

UNION ALL SELECT 1, 2, '인사', '인사/4대보험' FROM dual

UNION ALL SELECT 1, 3, '인사', '인사/구인' FROM dual

UNION ALL SELECT 1, 4, '인사', '인사/성희롱 예방교육' FROM dual

UNION ALL SELECT null, 5, null, '총무' FROM dual

UNION ALL SELECT 5, 6, '총무', '총무/넷메신저' category FROM dual

UNION ALL SELECT 5, 7, '총무', '총무/전화사용법' category FROM dual

)

select * from t;

 

제가 만든 쿼리는 다음과 같습니다.

쿼리가 많이 복잡해 보입니다.. 간결한 방법이 없을까요?

알려주세요...

 

WITH t AS

(

SELECT '총무/넷메신저' category FROM dual

UNION ALL SELECT '총무/전화사용법' FROM dual

UNION ALL SELECT '총무' FROM dual

UNION ALL SELECT '인사' FROM dual

UNION ALL SELECT '인사/구인' FROM dual

UNION ALL SELECT '인사/성희롱 예방교육' FROM dual

UNION ALL SELECT '인사/4대보험' FROM dual

)

select t1.*,t2.rn rn2 from

(select a.*, row_number() over(order by parent_category,category) rn from (

SELECT LENGTH (category) - LENGTH (REPLACE (category, '/', '')) DEPTH,

nvl(SUBSTR (category,1, INSTR (category, '/', -1) - 1),category) parent_category,

category

FROM t) a) t1, (select b.*, row_number() over(order by parent_category,category) rn from (

SELECT LENGTH (category) - LENGTH (REPLACE (category, '/', '')) DEPTH,

nvl(SUBSTR (category,1, INSTR (category, '/', -1) - 1),category) parent_category,

category

FROM t) b) t2 where t1.parent_category=t2.category(+) and t2.rn is not null order by t1.parent_category,t1.category;

[Top]
No.
제목
작성자
작성일
조회
40590[질문] 출근 시간 평균을 낼려면 어떻게 해야 할까요? [3]
정규성
2014-10-16
7641
40589오라클 시퀀스에 대해 문의 드립니다.
정봉경
2014-10-16
7139
40588오라클 8 버전에서 100만건 이상 한번에 업데이트 [1]
박정원
2014-10-15
7733
40587분류명만 있는 데이터를 부모 일련번호를 포함한 데이터로 가공해야 하는데 도와주세요.
김성욱
2014-10-14
6739
40586강제적인 순차 자료를 조회해야 합니다. 마농님 도와주세요.....ㅜ.ㅜ [2]
도끼발
2014-10-09
7697
40585할인 쿼리 관련 질문입니다. [3]
황의중
2014-10-04
7338
40584몇번째 구분자 사이의 문자열만 추출 [4]
조성훈
2014-10-01
7964
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.016초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다