西瓜皮

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
WITH a
AS  
(  
SELECT *,
FOrderPath=CAST(RIGHT(1000+FOrder,3) AS NVARCHAR(200)),
FPath=CAST(Id AS NVARCHAR(200)),
FLevel=0
 FROM Base_Class AS a WHERE  NOT EXISTS(SELECT 1 FROM Base_Class WHERE ID=a.PID)  
UNION ALL  
SELECT b.*,
CAST(a.FOrderPath + RIGHT(1000+b.FOrder,3)AS NVARCHAR(200)),
CAST((a.FPath + ',' + CAST(b.Id AS NVARCHAR(10)))AS NVARCHAR(200)),
FLevel=FLevel+1
 FROM a INNER JOIN Base_Class AS b ON b.PID=a.ID
)
SELECT * FROM a ORDER BY FOrderPath

 

posted on 2014-01-18 15:48  西瓜皮  阅读(258)  评论(0编辑  收藏  举报