在线等待 !sql 列传行问题
比如一个表有两个字段 类别 金额
类别 金额
西药费 100
草药费 200
材料费 300
想出现以下效果
西药费 草药费 材料费
100 200 300
而且费类类别 数量是不确定的
哪位指点下 感激不尽
[解决办法]
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 行受影响)**/
[解决办法]
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)