cte재귀쿼리를 이용해서 이중트리구조를 짜고싶습니다.


다음과 같은 테이블(employees) 있다고 가정


 id                 sidL           sidR


Nancy          Ina                 David
Ina RonDan
David JamesNULL
Ron AndrewJanet
Dan MargaretSteven
James MichaelNULL
Andrew RobertNULL
Janet NULLNULL
Margaret NULLNULL
Steven NULLNULL
Michael NULLNULL
Robert LauraAnn
Laura NULLNULL
Ann NULLNULL





id값(최초 Nancy)을 기준으로 sidL 왼쪽위치  sidR 오른쪽 위치합니다.


따라서 출력은


LVL0                                                                                  Nancy

LVL1                                              Ina ----------------------------------------------David

LVL2                        Ron---------------------- Dan                                     James------------------NULL

LVL3     Andrew-------------  Janet        Margaret--------- Steven         Michael--------NULL        NULL-------- NULL

LVL4

LVL5

.

위와같은 형식이되어야하는대요.




일단 왼쪽라인만 출력했을경우 


WITH EmpCTE(id, sidL, sidR, lvl)

AS

(

      -- Anchor Member(AM)

      SELECT id, sidL, sidR, 0

      FROM employees

      WHERE id = 'Nancy'


      UNION ALL


      -- Recursive Memeber(RM)

      SELECT E.id, E.sidL, E.sidR, M.lvl+1

      FROM employees AS E

      INNER JOIN EmpCTE AS M ON M.sidL = E.id 

)

SELECT * FROM EmpCTE


출력값



id             sidL         sidR        lvl

Nancy    Ina               David        0

Ina            Ron       Dan        1

Ron            Andrew       Janet        2

Andrew    Robert       NULL        3

Robert    Laura       Ann        4

Laura    NULL       NULL        5



LVL0                                                                                  Nancy

LVL1                                              Ina ----------------------------------------------David

LVL2                        Ron---------------------- Dan                                     

LVL3     Andrew-------------  Janet              

LVL4   Robert--------NULL

LVL5  Laura------Ann

.



위 출력값은 왼쪽기준으로만 출력했을때 정상출력이 됩니다.

하지만 왼쪽 오른쪽 모두 출력해야하는대....

어떻게 해야하는지 고수님들의 조언 부탁드립니다.











No. Subject Author Date Views
Notice SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 36244
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 18822
» cte를 이용 이중트리구조를 출력하려합니다. [1] gtm100 2013.07.25 5197
7042 MsDtsSrvr.exe 오류가 나네요 곰팡이 2013.07.25 7922
7041 SqlServer 2012 인스탄스 제거 질문드립니다. [2] 힘내라장코치 2013.07.25 5005
7040 mssql 7 desktop 버젼 구할 방법이 없을까요 ? [1] 어둠별빛 2013.07.24 4522
7039 쿼리 수정 설명 부탁드립니다. [2] rx프로그래머rx 2013.07.24 4534
7038 키워드 검색을 하는데, 다중 키워드를 and 조건으로 검색하는 경우 [4] 더따뜻한 2013.07.24 7175
7037 데이터의 날짜보다 빠른 모든 6개월 내의 데이터와 조인 질문 [1] 슈팅스타 2013.07.24 4759
7036 해외 호스팅 서버쪽에 SQL2005 서버로 이전 작업 문의드립니다. [2] Larry 2013.07.23 5263
7035 쿼리 고수님들께 문의좀 드립니다. ^^ [2] 남자나무 2013.07.23 5625
7034 mdf 파일 손상히 tail log 백업 방법 [2] Tommy Hilfi 2013.07.23 5536
7033 질문드립니다 [1] 잉잉 2013.07.23 4809
7032 그룹별 곱하기 [1] taz2315 2013.07.23 9138
7031 쿼리 문의드립니다 [1] kyuni01 2013.07.22 4356
7030 커서 문법 질문이 있습니다.(초보) [1] alima 2013.07.22 4994
7029 도와주세요!! MYsql 쿼리입니다.ㅜ [1] rx프로그래머rx 2013.07.22 6225
7028 xlsx 엑셀 파일 (시트당 50만건) 데이터를 MS SQL 2000 또는 2005로 옮기기 [5] Larry 2013.07.22 13377
7027 공백인식 문의입니다. [2] 거저먹네 2013.07.22 6854
7026 [급] 복구 방법 문의 [2] 아레아 2013.07.22 4973
7025 MSSQL 2012에서는 *= 안먹히나요??? [3] 떨거지희 2013.07.22 8587
7024 쿼리 실행계획 확인 부탁드립니다. [1] 꿀덩이 2013.07.22 4795





XE Login