안녕하세요 계층형 쿼리에서 최상위값을 구하고싶습니다.
아래와 같이 데이터가 구성되어있습니다.
MENU_NO |
UPPER_MENU_NO |
MENU_NM |
DEPTH |
9000000 |
0 |
시스템관리 |
0 |
9010100 |
9000000 |
메뉴관리 |
1 |
9010200 |
9000000 |
권한관리 |
1 |
9010210 |
9010200 |
권한관리-탭1 |
2 |
9010220 |
9010200 |
권한관리-탭2 |
2 |
최상위 메뉴의 메뉴값이 0일때 아래와같이 별도로 최상위 값을 한컬럼으로 조회시키고 싶은데 어떻게 짜야할지 모르겠네요..
MSSQL 2014버전을 사용중입니다.
root |
MENU_NO |
UPPER_MENU_NO |
MENU_NM |
DEPTH |
0 |
9000000 |
0 |
시스템관리 |
0 |
0 |
9010100 |
9000000 |
메뉴관리 |
1 |
0 |
9010200 |
9000000 |
권한관리 |
1 |
0 |
9010210 |
9010200 |
권한관리-탭1 |
2 |
0 |
9010220 |
9010200 |
권한관리-탭2 |
2 |
현재 사용중인 쿼리인데 어느부분을 추가해주어야 할까요..
WITH SEARCH_MENU (MENU_NO, UPPER_MENU_NO, MENU_NM, DEPTH)
AS (
SELECT MENU_NO, UPPER_MENU_NO, MENU_NM, 0
FROM COM_MENU
WHERE MENU_NO != 0
AND UPPER_MENU_NO = 0
UNION ALL
SELECT M.MENU_NO, M.UPPER_MENU_NO, M.MENU_NM, DEPTH + 1
FROM TEST_MENU M, SEARCH_MENU S
WHERE S.MENU_NO = M.UPPER_MENU_NO
AND S.MENU_NO != 0
)
select * from SEARCH_MENU
order by MENU_NO
|