2012. 3. 19. 10:04
MSSQL
With Tree_Org(self_cd, parent_cd, name, org_level, sort_col)
AS
(
Select self_cd, parent_cd, name, 1 As Org_Level, Convert(varchar(255), self_cd)
From tbl_relation
Where self_cd = '01'
Union All
Select a.self_cd, a.parent_cd, a.name, b.org_level + 1 As org_level, Convert(varchar(255), sort_col + ' ' + a.self_cd)
From tbl_relation A
Inner Join Tree_Org B On A.parent_cd = B.self_cd
)
Select self_cd, parent_cd, name, org_level, sort_col
From Tree_Org
order by sort_col
오라클에서는 Connect by를 써서 나타내지만 Mssql에서는 2005부터 CTE로 기능을 제공한다.
붉게 표시된 부분은 특정 컬럼을 연결하여 마지막 조회시 연결된 컬럼으로 sort하게되며 계층형태로 조회된다.
출처 : http://blog.naver.com/PostView.nhn?blogId=kwonhjae&logNo=30039692894
[출처] MS-SQL 2005 계층구조|작성자 Gabriel