首页 > 数据库技术 > 详细

sql 递归树

时间:2014-03-28 13:28:38      阅读:665      评论:0      收藏:0      [点我收藏+]

with CTE as
(
-->Begin 一个定位点成员
select ID, PersonName,ParentID,cast(PersonName as nvarchar(max)) as TE,
ROW_NUMBER()over(order by getdate()) as OrderID
--最关键是上面这个字段,要获取排序字段,按字符串来排序。
--其中窗口函数必须要使用order by,但是不能用整型,那就用时间吧
from tmpTPStmp where ParentID=0
-->End
union all
-->Begin一个递归成员
select tmpTPStmp.ID, tmpTPStmp.PersonName,tmpTPStmp.ParentID,cast(replicate(‘ ‘,len(CTE.TE))+‘|_‘+tmpTPStmp.PersonName as nvarchar(MAX)) as TE,
CTE.OrderID*100+ROW_NUMBER()over(Order by GETDATE()) as OrderID
from tmpTPStmp inner join CTE
on tmpTPStmp.ParentID=CTE.ID
-->End
)
select * from CTE
order by LTRIM(OrderID)--最后将这个整型数据转换为字符串型的进行排序

sql 递归树,布布扣,bubuko.com

sql 递归树

原文:http://www.cnblogs.com/kedarui/p/3629030.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!