mssql 재귀쿼리(HIERARCHY), 임시테이블, 프로시저 사용하여 쿼리추출
제목 : 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 한 후, 해당 임시테이블을 가공하여 사용함.
예제 소스 파일 :
출처 :