树形结构数据显示函数
测试表:fmenu   
 字段menuid   int   ,menuname   varchar(50),parentmenu   int    
 分别为   菜单编号   ,名称,上级编号 
 数据: 
 1         系统      0 
 2         管理系统   1 
 3         财务               2 
 4         分销               2 
 5         组织               1 
 6         公司               5      
 实现显示结构有: 
                系统 
                      管理系统 
                                  财务 
                                  分销 
                      组织 
                               公司   
 即数据结构!          
------解决方案--------------------邹老大的代码 
 --测试数据 
 DECLARE @t TABLE(ID char(3),PID char(3),Name nvarchar(10)) 
 INSERT @t SELECT  '001 ',NULL , '山东省 ' 
 UNION ALL SELECT  '002 ', '001 ', '烟台市 ' 
 UNION ALL SELECT  '004 ', '002 ', '招远市 ' 
 UNION ALL SELECT  '003 ', '001 ', '青岛市 ' 
 UNION ALL SELECT  '005 ',NULL , '四会市 ' 
 UNION ALL SELECT  '006 ', '005 ', '清远市 ' 
 UNION ALL SELECT  '007 ', '006 ', '小分市 '   
 --深度排序显示处理 
 --生成每个节点的编码累计(相同当单编号法的编码) 
 DECLARE @t_Level TABLE(ID char(3),Level int,Sort varchar(8000)) 
 DECLARE @Level int 
 SET @Level=0 
 INSERT @t_Level SELECT ID,@Level,ID 
 FROM @t 
 WHERE PID IS NULL 
 WHILE @@ROWCOUNT> 0 
 BEGIN 
 	SET @Level=@Level+1 
 	INSERT @t_Level SELECT a.ID,@Level,b.Sort+a.ID 
 	FROM @t a,@t_Level b 
 	WHERE a.PID=b.ID 
 		AND b.Level=@Level-1 
 END   
 --显示结果 
 SELECT SPACE(b.Level*2)+ '|-- '+a.Name 
 FROM @t a,@t_Level b 
 WHERE a.ID=b.ID 
 ORDER BY b.Sort 
 /*--结果 
 |--山东省 
   |--烟台市 
     |--招远市 
   |--青岛市 
 |--四会市 
   |--清远市 
     |--小分市 
 --*/ 
------解决方案----------------------测试数据 
 DECLARE @t TABLE(ID char(3),PID char(3),Name nvarchar(10))   
 insert @t 
 select 1,0           , '系统 ' union all 
 select 2,1           , '管理系统 ' union all 
 select 3,2           , '财务 ' union all 
 select 4,2           , '分销 ' union all 
 select 5,1           , '组织 ' union all 
 select 6,5           , '公司 ' union all 
 select 7,3           , '分销 ' union all 
 select 8,3           , '组织 ' union all 
 select 9,4           , '公司 '   
 --深度排序显示处理 
 --生成每个节点的编码累计(相同当单编号法的编码) 
 DECLARE @t_Level TABLE(ID char(3),Level int,Sort varchar(8000)) 
 DECLARE @Level int 
 SET @Level=0 
 INSERT @t_Level SELECT ID,@Level,ID 
 FROM @t 
 WHERE PID =0 
 WHILE @@ROWCOUNT> 0 
 BEGIN 
 	SET @Level=@Level+1 
 	INSERT @t_Level SELECT a.ID,@Level,b.Sort+a.ID 
 	FROM @t a,@t_Level b 
 	WHERE a.PID=b.ID 
 		AND b.Level=@Level-1 
 END   
 --显示结果 
 SELECT SPACE(b.Level*6)+ '|-- '+a.Name 
 FROM @t a,@t_Level b 
 WHERE a.ID=b.ID 
 ORDER BY b.Sort 
------解决方案--------------------DECLARE @t TABLE(ID char(3),PID char(3),Name nvarchar(10)) 
 insert @t 
 select 1,0