트리구조 데이터에서 최상위값을 찾아 옆에 붙이기 0 1 442

by 김진수 [SQLServer] [2021.06.19 01:20:28]


안녕하세요. 질문이 있습니다.

트리구조의 아래와 같은 데이터가 있고, 최상위 ID값을 컬럼을 만들어 옆에 붙이고 싶습니다...

MS SQL 입니다.ㅠ

데이터

ID PARENTID
1 NULL
2 1
3 2
4 2
5 NULL
6 5
7 5
8 7


 아래와 같이 최상위값(Firstid)을 만들고 싶습니다.

FirstID ID PARENTID
1 1 NULL
1 2 1
1 3 2
1 4 2
5 5 NULL
5 6 5
5 7 5
5 8 7
by 뉴비디비 [2021.06.19 22:58:41]
WITH tbl (E_ID , PARENTID) AS (
	SELECT 1, NULL UNION ALL 
	SELECT 2, 1    UNION ALL 
	SELECT 3, 2    UNION ALL 
	SELECT 4, 2    UNION ALL 
	SELECT 5, NULL UNION ALL 
	SELECT 6, 5    UNION ALL 
	SELECT 7, 5    UNION ALL 
	SELECT 8, 7  
)
, tmpT (FirstID , E_ID , PARENTID) AS ( 
	SELECT E_ID , E_ID , PARENTID  FROM tbl WHERE PARENTID IS NULL
	UNION ALL 
	SELECT A.FirstID , R.E_ID , R.PARENTID  FROM tmpT A JOIN tbl R ON A.E_ID = R.PARENTID 
) 

SELECT 
	FirstID , E_ID , PARENTID
FROM tmpT 
ORDER BY FirstID , E_ID
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입