3초기억력

mssql 재귀쿼리(HIERARCHY), 임시테이블, 프로시저 사용하여 쿼리추출 본문

쿼리_MSSQL

mssql 재귀쿼리(HIERARCHY), 임시테이블, 프로시저 사용하여 쿼리추출

잠수콩 2016. 11. 29. 17:36



제목 : mssql 재귀쿼리, 임시테이블, 프로시저 사용하여 쿼리추출




소스 :


create PROCEDURE SP_HIERARCHY

@strUserID nvarchar(50)

AS

BEGIN

SET NOCOUNT ON;

    

Create Table #Result ( ID nvarchar(20),

NAME nvarchar(20),

PID nvarchar(20),

Level int );


With CTE(UserID, UserName, RecommendID, Lvl, Hierarchy)

As (


  Select UserID, UserName, RecommendID, 0 As Lvl, CAST(UserID as varchar(100)) Hierarchy

  From T_MEMBER

  Where UserID = @strUserID


  Union all


  Select C.UserID, C.UserName, C.RecommendID, Lvl + 1, CAST(Hierarchy + ':' + CAST(C.UserID as varchar(100)) as varchar(100)) Hierarchy

  From T_MEMBER C inner join CTE D On C.RecommendID = D.UserID

)

insert into #Result (ID, NAME, PID, Level)

Select UserID, UserName, RecommendID, Lvl From CTE 

--where Lvl between 0 and 3     --레벨사용하여 부분 level 만큼만 추출하기

Order by Hierarchy ASC;


select ID, PID, NAME, Level  from #Result T1;


drop table #Result;


SET NOCOUNT OFF

END



내용 :


임시테이블에 재귀쿼리한 내용을 insert 한 후, 해당 임시테이블을 가공하여 사용함.





예제 소스 파일 :


 출처 :  




Comments