728x90
반응형
728x170
■ CTE 재귀 호출을 사용하는 방법을 보여준다.
▶ 예제 코드 (SQL)
CREATE TABLE MENU
(
ID INT
,PARENT_ID INT
,NAME VARCHAR(50)
);
INSERT INTO MENU VALUES (1, 0, '메뉴');
INSERT INTO MENU VALUES (2, 0, '메뉴');
INSERT INTO MENU VALUES (3, 1, '메뉴');
INSERT INTO MENU VALUES (4, 1, '메뉴');
INSERT INTO MENU VALUES (5, 1, '메뉴');
INSERT INTO MENU VALUES (6, 5, '메뉴');
INSERT INTO MENU VALUES (7, 2, '메뉴');
INSERT INTO MENU VALUES (8, 2, '메뉴');
WITH CTE(ID, PARENT_ID, NAME, DISPLAY_ORDER, TREE_PATH)
AS
(
SELECT
ID
,PARENT_ID
,NAME
,CONVERT(VARCHAR(4000), ID ) AS DISPLAY_ORDER
,CONVERT(VARCHAR(4000), NAME) AS TREE_PATH
FROM MENU
WHERE PARENT_ID = 0
UNION ALL
SELECT
A.ID
,A.PARENT_ID
,A.NAME
,CONVERT(VARCHAR(4000), B.DISPLAY_ORDER + ' > ' + CONVERT(VARCHAR(4000), A.ID)) AS DISPLAY_ORDER
,CONVERT(VARCHAR(4000), B.TREE_PATH + ' > ' + A.NAME ) AS TREE_PATH
FROM MENU AS A, CTE AS B
WHERE A.PARENT_ID = B.ID
)
SELECT
NAME
,TREE_PATH
FROM CTE
ORDER BY DISPLAY_ORDER;
728x90
반응형
그리드형(광고전용)
'Database > SQLServer' 카테고리의 다른 글
[DATABASE/SQLSERVER] 저장 프로시저 리스트 조회하기 (0) | 2017.05.24 |
---|---|
[DATABASE/SQLSERVER] SP_HELPTEXT 저장 프로시저 : 프로시저 코드 조회하기 (0) | 2017.05.24 |
[DATABASE/SQLSERVER] SELECT TOP문을 동적으로 사용하기 (0) | 2017.05.24 |
[DATABASE/SQLSERVER] 전체 인덱스 스크립트 조회하기 (0) | 2015.06.13 |
[DATABASE/SQLSERVER] 구분자를 사용해 문자열 분리하기 (0) | 2015.05.11 |
[DATABASE/SQLSERVER] CTE 재귀 호출 사용하기 (0) | 2015.05.09 |
[DATABASE/SQLSERVER] 저장 프로시저 소스 코드 조회하기 (0) | 2015.05.09 |
[DATABASE/SQLSERVER] SQL Server 설치시 1433 포트가 열리지 않은 경우 처리하기 (0) | 2015.05.08 |
[DATABASE/SQLSERVER] 영어 버전 윈도우즈 및 SQL Server 설치시 한글 사용하기 (0) | 2015.05.08 |
[DATABASE/SQLSERVER] 데이터베이스 내 모든 테이블 모든 행 삭제하기 (0) | 2015.05.08 |
댓글을 달아 주세요