首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

待 !sql 列传行有关问题

2012-07-31 
在线等待 !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) 

热点排行