分享

sqlserver递归查询

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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多