表结构:tblTree(ID, ParentID, Name)
【说明】:ParentID = 0 表示 这个记录对应根目录
1)
with SubQuery(ID,Name,ParentID) as (
select ID,Name,ParentID from tblTree where ParentID = 0
union all
select A.ID,A.Name,A.ParentID
from tblTree A inner join SubQuery B
on A.ParentID = B.ID
)
select * from SubQuery
2)
with SubQuery(ID,Name,ParentID,[Level]) as (
select ID,Name,ParentID,0 as [Level] from tblTree where ParentID = 0
union all
select A.ID,A.Name,A.ParentID,B.Level+1 AS [Level]
from tblTree A inner join SubQuery B
on A.ParentID = B.ID
)
select * from SubQuery