标签:
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)
在Microsoft SQL Server 2008中,将一张表的某列字段的值转换为列名称
标签:
原文地址:http://www.cnblogs.com/shujukuzhazha/p/5251133.html