动态行转列问题
有表 #1 ,数据如下:
rkey         ,PN            ,nums       ,rkey1   
215          ,MP4-2642-1    ,30         ,62          
273          ,FE2-2664-1    ,432        ,1                            
594          ,FS2-2708-1    ,20         ,370    
632          ,TE4-2718-1    ,48         ,28                           
788          ,FE4-1376-1A    ,200       ,28     
1466          ,AFE4-1975-1A    ,380     ,28     
.......
我要的结果:
rkey         ,PN               ,62      ,1      ,370     ,28  .....
215          ,MP4-2642-1       ,30      ,0      ,0       ,0     
273          ,FE2-2664-1       ,0      ,432     ,0       ,0
594          ,FS2-2708-1       ,0      ,0       ,20      ,0
632          ,TE4-2718-1       ,0      ,0       ,0       ,48                        
788          ,FE4-1376-1A      ,0      ,0       ,0       ,200                        
1466          ,AFE4-1975-1A    ,0      ,0       ,0       ,380                       
=================
下面是我写的SQL语句,但总报错:  
[消息 245,级别 16,状态 1,第 4 行
在将 varchar 值 '  then nums else 0 end) as ' 转换成数据类型 int 时失败。]    
declare @sql varchar(8000)
select @sql='select top 100 percent #1.rkey,#1.PN'
select @sql=@sql+
',max(case rkey1 when '+ rkey1 +'  then [nums] else 0 end) as '+ convert(varchar(10),rkey1)  
from #1  
  group by #1.rkey1
select @sql=@sql+' from #1 group by #1.rkey,#1.PN,#1.rkey1 '
注意:rkey,nums,rkey1 都是int 型。  
------解决方案--------------------
SQL code
declare @sql varchar(8000)
select @sql='select top 100 percent #1.rkey,#1.PN'
select @sql=@sql+
',max(case rkey1 when '+ cast(rkey1 as varchar) +' then [nums] else 0 end) as '+ convert(varchar(10),rkey1)  
from #1  
 group by #1.rkey1
select @sql=@sql+' from #1 group by #1.rkey,#1.PN,#1.rkey1 '