求一复杂SQL语句
我有一个表AA,有三个字段:区域等级,区域名称,部门名称 
 数据记录如下: 
 区域等级   区域名称                  部门名称 
 1                        广州区域                  广州总部营业部          
 2                        番禺区域                  番禺石基营业部       
 2                        番禺区域                  广州总部营业部             
 3                        佛山区域                  佛山大沥营业部                                                                                                             
 等等 
 我想得到下面的结果 
 一级区域名称         二级区域名称         三级区域            部门                                                                            
       广州区域                  番禺区域                                                广州总部营业部                      
                                                 番禺区域                                                番禺石基营业部 
                                                                                           佛山区域      佛山大沥营业部   
 即: 
 (1)A表中有N级区域,结果表中就有N+1个字须. 
 (2)结果表中部门名称必须唯一.
------解决方案--------------------你这样的设计, 数据的层次是依赖于数据顺序的.   
 而数据库中的数据是无法保证存储顺序的, 所以你这样的设计并不能保证数据能够被正确的处理.
------解决方案--------------------create table #v (id int,n varchar(30),m varchar(30)) 
 insert into #v 
 select 1,         '广州区域 ',       '广州总部营业部 ' union all    
 select 2,         '番禺区域 ',       '番禺石基营业部 ' union all     
 select 2,         '番禺区域 ',       '广州总部营业部 ' union all       
 select 3,         '佛山区域 ',       '佛山大沥营业部 '    
 select m,  
 max(case when id=1 then  '广州区域 ' end) [一级区域名称], 
 max(case when id=2 then  '番禺区域 ' end) [二级区域名称], 
 max(case when id=3 then  '佛山区域 ' end) [三级区域名称] 
 from #v group by m     
 这个交叉表就可以的了吧?看到后面,我有点迷糊了~
------解决方案--------------------DDDDDDDD
------解决方案--------------------Create Table AA 
 (区域等级	Int, 
  区域名称	Nvarchar(20), 
  部门名称	Nvarchar(50)) 
 Insert AA Select 1,        N '广州区域 ',      N '广州总部营业部 '    
 Union All Select 2,        N '番禺区域 ',      N '番禺石基营业部 '   
 Union All Select 2,        N '番禺区域 ',      N '广州总部营业部 '     
 Union All Select 3,        N '佛山区域 ',      N '佛山大沥营业部 '    
 GO 
 Declare @S Nvarchar(4000) 
 Select @S =  ' ' 
 Select @S = @S + N ', Max(Case 区域等级 When  ' + Cast(区域等级 As Varchar) + N ' Then 区域名称 Else  ' ' ' ' End) As [ ' + Cast(区域等级 As Varchar) + N '级区域名称  ] '