当前位置: 代码迷 >> Sql Server >> 待 !sql 列传行有关问题
  详细解决方案

待 !sql 列传行有关问题

热度:91   发布时间:2016-04-27 11:52:29.0
在线等待 !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 [email protected]+' 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)
  相关解决方案