行列转换
测试数据 
 编号         物料类别            产品编号 
 1                     铅笔                        0001 
 2                     铅笔                        0002 
 3                     铅笔                        0003 
 1                     钢笔                        0004 
 2                     钢笔                        0005 
 1                     圆珠笔                  0007 
 2                     圆珠笔                  0008 
 等等,其中物料类别不确定,这是一个订单的物料信息,要求实现以下效果: 
 编号            铅笔         钢笔      圆珠笔 
 1                     0001         0004      0007 
 2                     0002         0005      0008 
 3                     0003         空               空   
 请问如何实现!!!!!???
------解决方案--------------------create table T(DateClass char(7), Class varchar(10), [Count] varchar(10)) 
 insert T   
 select  '1 ', '铅笔 ', '0001 ' 
 union all  
 select  '2 ', '铅笔 ', '0001 ' 
 union all  
 select  '3 ', '铅笔 ', '0001 ' 
 union all  
 select  '1 ', '钢笔 ', '0001 ' 
 union all  
 select  '2 ', '钢笔 ', '0001 ' 
 union all  
 select  '1 ', '圆珠笔 ', '0001 ' 
 union all  
 select  '2 ', '圆珠笔 ', '0001 '   
 declare @sql varchar(2000) 
 set @sql =  'select DateClass  '   
 select @sql = @sql +  ',sum(case Class when  ' ' '+a.Class+ ' ' ' then count else 0 end )as [ '+a.Class+ '] ' 
 from (select distinct Class from t)a   
 set @sql = @sql +  ' from t group by DateClass '   
 exec(@sql)   
 drop table t
------解决方案--------------------http://blog.csdn.net/zjcxc/archive/2003/12/29/20075.aspx
------解决方案--------------------create table T(编号 int, 物料类别  nvarchar(10),  产品编号 char(4)) 
 insert T select 1,        '铅笔 ',         '0001 ' 
 union all select 2,        '铅笔 ',         '0002 ' 
 union all select 3,        '铅笔 ',         '0003 ' 
 union all select 1,        '钢笔 ',         '0004 ' 
 union all select 2,        '钢笔 ',         '0005 ' 
 union all select 1,        '圆珠笔 ',       '0007 ' 
 union all select 2,        '圆珠笔 ',       '0008 '   
 declare @sql varchar(8000) 
 set @sql= 'select 编号, ' 
 select @sql=@sql+quotename(物料类别)+ '=max(case when 物料类别= '+quotename(物料类别,  ' ' ' ')+ ' then 产品编号 end), ' from T group by 物料类别 
 select @sql=left(@sql, len(@sql)-1), @sql=@sql+ ' from T group by 编号 ' 
 exec(@sql)
------解决方案--------------------    create table aa(编号 int,物料类别 varchar(100),产品编号 char(10)) 
 insert into aa select 1, '铅笔 ', '0001 ' union all