不知道你说的是不是SQL层面的处理,就当是吧
ifobject_id('tempdb..#tab')isnotnulldroptable#tab
createtable#tab(IDnvarchar(50),ParentIDnvarchar(50),Namenvarchar(50))
insertinto#tab(ID,ParentID,Name)
select'1','-','A'unionall
select'2','1','B'unionall
select'3','1','C'unionall
select'4','2','D'unionall
select'5','2','E'unionall
select'6','3','F'unionall
select'7','3','G'unionall
select'8','4','H'unionall
select'9','4','I'unionall
select'10','8','J'unionall
select'11','10','K'
;withtas(
selectID,ParentID,Name,1aslv,cast(Nameasnvarchar(max))aspathfrom#tabwhereParentID='-'
unionall
selecta.ID,a.ParentID,a.Name,(t.lv+1)aslv,(t.path+'-'+a.Name)aspath
from#tabainnerjointona.ParentID=t.ID
)
selectName,lv,pathfromt
|