树形菜单
create   table   [tb](id   varchar(10),pid   varchar(10),name   varchar(20)) 
 insert   [tb]   select    '01 ', ' '      , '中国 ' 
 union   all   select    '02 ', ' '      , '美国 ' 
 union   all   select    '03 ', ' '      , '加拿大 ' 
 union   all   select    '04 ', '01 ', '北京 ' 
 union   all   select    '05 ', '01 ', '上海 ' 
 union   all   select    '06 ', '01 ', '江苏 ' 
 union   all   select    '07 ', '06 ', '苏州 ' 
 union   all   select    '08 ', '07 ', '常熟 ' 
 union   all   select    '09 ', '06 ', '南京 ' 
 union   all   select    '10 ', '06 ', '无锡 ' 
 union   all   select    '11 ', '02 ', '纽约 ' 
 union   all   select    '12 ', '02 ', '旧金山 ' 
 go 
 想实现得到的结果如下 
 : 
 中国 
                北京 
                上海 
                江苏 
                                  苏州 
                                                    常熟 
                                                                      南京 
                                                                                           无锡 
 美国 
                      纽约 
                      旧金山 
 加拿大 
 旧金山 
------解决方案----------------------测试数据 
 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 
 /*--结果 
 |--山东省 
   |--烟台市 
     |--招远市 
   |--青岛市 
 |--四会市 
   |--清远市 
     |--小分市 
 --*/ 
------解决方案--------------------http://blog.csdn.net/roy_88/archive/2006/12/24/1458449.aspx 
 这里有个列子