您的位置:首页 > 数据库

在Microsoft SQL Server 2008中,将一张表的某列的值转换为列名称

2016-08-09 11:03 337 查看
步骤一:创建测试表

create table test

(部门 varchar(10),

客户 varchar(10),

费用名称 varchar(10),

金额 int

)

步骤二:插入测试数据

insert into test values ('A','a','手机费',10)

insert into test values ('A','a','办公费',11)

insert into test values ('A','a','公交费',9)

insert into test values ('A','b','手机费',10)

insert into test values ('A','b','办公费',10)

insert into test values ('A','c','公交费',10)

insert into test values ('B','d','手机费',10)

insert into test values ('B','d','办公费',11)

insert into test values ('B','e','公交费',9)

insert into test values ('B','f','手机费',10)

insert into test values ('B','f','办公费',10)

insert into test values ('B','f','公交费',10) 

select * from test

步骤三:实现行列转换(基于费用名称列)

declare @sql varchar(4000)

set @sql = 'select [部门],[客户]'

select @sql = @sql + ',sum(isnull(case [费用名称] when '''+[费用名称]+''' then [金额] end,0)) as 

['+[费用名称]+']'

from (select distinct [费用名称] from [test]) as a

select @sql = @sql+' from [test] group by [部门],[客户]'

exec(@sql) 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  sql server
相关文章推荐