排序问题,求教达人!
表departmentlclass内有 
 id   parentid,name   orderid 
 1                  0            部门      1 
 2                  1            人事      2 
 3                  1            技术      1 
 4                  1            管理      3 
 5                  2            出纳      1 
 6                  2            会计      2 
 7                  3            一部      1 
 8                  3            二部      2 
 9                  4            老总      1 
 我想要的结果是,按orderid排序读出各部门和各部门下面的结构顺序是   部门1紧接着是部门1下面的结构按orderid排序,然后读出部门2和部门2下面的结构按orderid排序,依次类推,,有达人帮忙解决万分感谢,,提示亦可 
------解决方案--------------------参看邹建的   
 --测试数据 
 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 
 /*--结果 
 |--山东省 
   |--烟台市 
     |--招远市 
   |--青岛市 
 |--四会市 
   |--清远市 
     |--小分市 
 --*/