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)--最后将这个整型数据转换为字符串型的进行排序
相关文章
- 11-09员工的重要性(求树的节点值之和)
- 11-09SQL优化小讲堂(六)——善待数据库从建表开始
- 11-09SQL练习一--查找最晚入职员工的所有信息
- 11-09牛客在线编程练习:SQL61_较难
- 11-09常用SQL查询语法教程
- 11-09SQL
- 11-097.SQL_数据查询语言DQL(更新中)
- 11-09SQL命令
- 11-09SQL的基础函数
- 11-09SQL练习题一