如何建立这样的交叉查询??
请教如何建立这样的交叉表查询语句 
 工资表:   
 月份      姓名         工资 
 1               张三            2000 
 1               李四            4000 
 2               张三            3000 
 2               李四            5000 
 3               张三            3000 
 3               李四            5000   
 输出的查询表如下 
 查询表:   
 月份      张三            李四 
 1               2000            4000 
 2               3000            5000    
 3               3000            5000
------解决方案--------------------declare @a table(月份 int, 姓名 varchar(10), 工资 int) 
 insert @a select 1 , '张三 ', 2000 
 union all select 1 , '李四 ', 4000 
 union all select 2 , '张三 ', 3000 
 union all select 2 , '李四 ', 5000 
 union all select 3 , '张三 ', 3000 
 union all select 3 , '李四 ', 5000 
 select * into tttt from @a    
 declare @s varchar(1000) 
 set @s= ' select 月份,  ' 
 select @s=@s+ ' sum(case when 姓名= ' ' '+[姓名] + ' ' ' then 工资 else 0 end)  '+[姓名]+ ', ' from @a group by 姓名 
 select @s=left(@s,len(@s)-1) 
 set @s=@s+  ' from tttt group by 月份 '   
 exec(@s) 
 drop table tttt
------解决方案--------------------普通行列转换   
 假设有张学生成绩表(t)如下   
 Name Subject Result 
 张三 语文  73 
 张三 数学  83 
 张三 物理  93 
 李四 语文  74 
 李四 数学  84 
 李四 物理  94   
 想变成  
 姓名 语文 数学 物理 
 张三 73  83  93 
 李四 74  84  94   
 create table #t 
 ( 
    Name    varchar(10) , 
    Subject varchar(10) , 
    Result  int 
 )   
 insert into #t(Name , Subject , Result) values( '张三 ', '语文 ', '73 ') 
 insert into #t(Name , Subject , Result) values( '张三 ', '数学 ', '83 ') 
 insert into #t(Name , Subject , Result) values( '张三 ', '物理 ', '93 ') 
 insert into #t(Name , Subject , Result) values( '李四 ', '语文 ', '74 ') 
 insert into #t(Name , Subject , Result) values( '李四 ', '数学 ', '83 ') 
 insert into #t(Name , Subject , Result) values( '李四 ', '物理 ', '93 ')   
 declare @sql varchar(8000) 
 set @sql =  'select Name as  ' +  '姓名 ' 
 select @sql = @sql +  ' , sum(case Subject when  ' ' ' + Subject +  ' ' ' then Result end) [ ' + Subject +  '] ' 
 from (select distinct Subject from #t) as a 
 set @sql = @sql +  ' from #t group by name ' 
 exec(@sql)    
 drop table #t   
 --结果 
 姓名       数学        物理        语文           
 ---------- ----------- ----------- -----------  
 李四       83          93          74 
 张三       83          93          73    
 ---------------------------------------------------- 
 如果上述两表互相换一下:即   
 姓名 语文 数学 物理 
 张三 73  83  93 
 李四 74  84  94   
 想变成  
 Name Subject Result 
 张三 语文  73 
 张三 数学  83 
 张三 物理  93 
 李四 语文  74 
 李四 数学  84 
 李四 物理  94   
 create table #t 
 ( 
    姓名 varchar(10) , 
    语文 int , 
    数学 int , 
    物理 int 
 )   
 insert into #t(姓名 , 语文