待 !sql 列传行有关问题

在线等待 !sql列传行问题比如一个表有两个字段 类别 金额类别金额西药费100草药费200材料费300想出现以下

在线等待 !sql 列传行问题
比如一个表有两个字段 类别 金额 

类别 金额
西药费 100
草药费 200
材料费 300

想出现以下效果
 
西药费 草药费 材料费
100 200 300


 而且费类类别 数量是不确定的 
哪位指点下 感激不尽

[解决办法]

SQL code
if object_id('[tb]') is not null drop table [tb]gocreate table [tb]([类别] varchar(6),[金额] int)insert [tb]select '西药费',100 union allselect '草药费',200 union allselect '材料费',300godeclare @sql varchar(8000)select  @sql=isnull(@sql+',','')  +'sum(case when 类别='''+类别+''' then 金额 else 0 end) as ['+类别+']'from(select distinct 类别 from tb) texec ('select '+@sql+' from tb')/**材料费         草药费         西药费----------- ----------- -----------300         200         100(1 行受影响)**/
[解决办法]
SQL code
declare @sql nvarchar(200)declare @list nvarchar(100)set @list=(select stuff((select ','+[类别] from tb for xml path('')),1,1,''))set @sql = N'select ' + @list + N'from tb pivot(sum([金额]) for [类别] in ('+ @list + N')) b'print @sqlexec(@sql)