첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
유용한 소스 코드가 있으면 icodebroker@naver.com으로 보내주시면 감사합니다.
블로그 자료는 자유롭게 사용하세요.

728x90
반응형
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
반응형
Posted by 사용자 icodebroker

댓글을 달아 주세요