본문 바로가기
Dev ::

[MSSQL] 재귀 쿼리/ 계층형쿼리/트리구조 쿼리

by 히로:: 2022. 1. 10.

 

그룹트리를 동기화 시키기 위해 그룹트리의 정보를 동기화 시킬일이 있다.

오라클의 경우 START WITH .. CONNECT BY PRIOR 구문을 사용하여 조회가 가능하지만

 

MSSQL의 경우 이번 기회를 통해 정리해보려 한다.

 

WITH TempTable AS(

	SELECT id , parent_id 
    FROM tableA
    WHERE parent_id = 0 // 최상위 트리
    
    UNION ALL
    
    SELECT id , parent_id 
    FROM TempTable AS A
    INNER JOIN tableA AS B ON B.id = A.parent_id

)
SELECT * FROM TempTable

 

with tree_query AS (


	select 
		dept_level,
		dept_nm,  
		dept_cd,  
		mdept_cd, 
		tel, 
		email,
		sort
									
    FROM A_TABLE 				
						
	WHERE dept_level = 0
						 
	UNION ALL
					
    
    select 
    	B.dept_level, 
    	B.dept_nm,
    	B.dept_cd,  
    	B.mdept_cd, 
    	B.tel,
    	B.email, 
		CONVERT(VARCHAR(255), CONVERT(NVARCHAR, A.sort) + N' > ' + CONVERT(VARCHAR(255), B.dept_cd))   sort

	FROM tree_query AS A
		inner join 	A_TABLE B ON B.mdept_cd  = A.dept_cd AND B.dept_level != 0 
	)
	
    SELECT dept_level dept , dept_nm group_nm ,  dept_cd group_cd,
    	  mdept_cd parent_group_cd, tel group_tel , email  , sort
	from tree_query order by sort

 

 

반응형

댓글