sql递归显示层级数据

;with catChild as(select *,cast(right('00000'+cast(Sort as varchar),5) as varchar(max)) as ssort 
from Category where ID = '123'
    union all select t.*,
    cast(ssort+right('00000'+cast(t.Sort as varchar),5) as varchar(max))
     from catChild, Category  t
    where catChild.ID = t.ParentID)
select * from catChild where IsVolumes='1'  order by ssort,Sort


;with cte as
 (select ID,Name,ParentID,1 level,
         cast(right('00000'+cast(Sort as varchar),5) as varchar(max)) as ssort
    from Category where ID = '111A' 
  union all select t.ID,t.Name,t.ParentID,c.level + 1,
       cast(ssort+right('00000'+cast(t.Sort as varchar),5) as varchar(max))
    from Category t
    join cte c on t.ParentID = c.ID)
select ID, Name, ParentID, level,ssort
  from cte order by ssort
原文地址:https://www.cnblogs.com/sxhlf/p/7852355.html