일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- SPLIT
- injection
- javascript 한글입력체크
- MSSQL보안
- asp함수
- sql업데이트
- JavaScript
- 한글입력체크
- ERD
- inner join
- 정규식
- jdbc driver
- 자바기초
- 이미지가로길이
- update
- xmldom
- tempDB
- 이미지세로길이
- WML
- FileSystemObject
- instr
- sql랭킹
- array
- wap
- VarType
- VARIABLE
- XML
- 인젝션
- sql순위
- join
- Today
- Total
3초기억력
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 한 후, 해당 임시테이블을 가공하여 사용함.
예제 소스 파일 :
출처 :
'쿼리_MSSQL' 카테고리의 다른 글
mssql 초성검색 function 만들기 (0) | 2016.12.28 |
---|---|
mssql 재귀쿼리 기본, 트리구조 (0) | 2016.11.30 |
mssql 엑셀에서 데이타 가져오기에서 숫자형, 문자형 필드의 NULL 오류 제대로 값 넣기 (0) | 2016.06.21 |
mssql sp_executesql output 매개변수 사용 (0) | 2016.03.15 |
ms-sql 랜덤숫자. 1~999까지 사이의 랜덤 추출 (2) | 2016.02.23 |