sql语言可以和高级语言一样来实现算法,比如用递归函数实现你的算法,现在不知道你需要返回的结果格式,还不能写

解决方案 »

  1.   

    就是在数据表中方一个排序字段SortNumber 
    update #Simple_PartTree set SortNumber = 0
    declare @OldChildID decimal
    declare @OldFatherID decimal
    Set @MaxSortNumber = (Select Count(ChildID) From #Simple_PartTree)
    Set @SortNumber = 1 select top 1 @OldChildID = ChildID,@OldFatherID=FatherID,@ChildID=ChildID,@FatherID=FatherID 
    from #Simple_PartTree 

    update #Simple_PartTree set SortNumber = @SortNumber 
    where childid = @ChildID set @SortNumber = @SortNumber + 1  while @SortNumber<=@MaxSortNumber begin
    set @ChildID = null 
    select top 1 @ChildID = ChildID,@FatherID=FatherID 
    from #Simple_PartTree 
    where FatherID=@OldChildID and SortNumber = 0  while @ChildID is not null begin

    update #Simple_PartTree set SortNumber = @SortNumber  
    where childid = @ChildID set @SortNumber = @SortNumber + 1 set @OldChildID = @ChildID
    set @ChildID = null 
    select top 1 @ChildID = ChildID,@FatherID=FatherID 
    from #Simple_PartTree 
    where FatherID=@OldChildID and SortNumber = 0 
    end  select top 1 @OldChildID=fatherid from #Simple_PartTree where ChildID = @OldChildID
    end
      

  2.   

    参考:http://blog.csdn.net/zjcxc/category/125593.aspx
    树形数据处理