안녕하세요. 오라클DB 에서 MS-SQL 로 변환 중인데요.
CODE_MASTER 라는 테이블의 구조가 부모키로 연결된 테이블 입니다.
CODE_MASTER 의 테이블 데이터가 아래와 같습니다.
MASTER_ID MASTER_NAME UPPER_MASTER_ID MASTER_LEVEL
1 1레벨 데이터 1
2 2레벨 데이터 1 2
3 3레벨 데이터 2 3
4 4레벨 데이터 3 4
5 1-1레벨 데이터 1
6 1-2레벨 데이터 5 2
7 1-3레벨 데이터 6 3
8 1-4레벨 데이터 7 4
이렇게 데이터가 되어 있다고 가정 하고 기존 오라클은 sys_connect_by_path 라는 함수를 통해
데이터를 ( 1레벨 데이터>2레벨 데이터>4레벨 데이터>4레벨 데이터 ) 붙여서
구해왔는데 MS-SQL 로 변환 하였을 경우 어떻게 해야 하는지 궁금해서 문의 드립니다.
SELECT x.MASTER_ID
,MASTER_NAME
,sys_connect_by_path(x.MASTER_NAME, '>')
,regexp_substr(sys_connect_by_path(x.MASTER_NAME, '>'),'[^>]+',1,1) as master_common_lv1
,regexp_substr(sys_connect_by_path(x.MASTER_NAME, '>'),'[^>]+',1,2) as master_common_lv2
,regexp_substr(sys_connect_by_path(x.MASTER_NAME, '>'),'[^>]+',1,3) as master_common_lv3
,regexp_substr(sys_connect_by_path(x.MASTER_NAME, '>'),'[^>]+',1,4) as master_common_lv4
,regexp_substr(sys_connect_by_path(x.MASTER_NAME, '>'),'[^>]+',1,5) as master_common_lv5
FROM CODE_MASTER x
where x.UPPER_MASTER_ID is not null
CONNECT BY PRIOR x.MASTER_ID = x.UPPER_MASTER_ID
START WITH x.MASTER_LEVEL = 1 |