62,046
社区成员
发帖
与我相关
我的任务
分享
if Object_id('Test') is not null drop table test
CREATE TABLE [dbo].[test](
[id] [int] IDENTITY(1,1) NOT NULL,
[name] [nvarchar](50) NULL,
[result] [int] NULL
)
insert into [test](name,result) values('张三',90)
insert into [test](name,result) values('李四',80)
insert into [test](name,result) values('王五',70)
declare @sql varchar(8000)
set @sql = ''
select @sql=@sql+
',isnull(sum( case name when '''+name+''' then Result end), 0 ) '''+name+ ''''
from (select distinct name from test )a
select @sql = stuff(@sql,1,1,'')
set @sql = 'select '+@sql+' from test'
print @sql
Exec(@sql)
结果
:declare @sql varchar(8000)
set @sql = ''
select @sql = @sql + ',sum(case when [name]='''+[name]+''''+' then result else null end) as '+[name] from test
select @sql = stuff(@sql,1,1,'')
set @sql = 'select '+@sql+' from test'
exec(@sql)
CREATE TABLE [dbo].[test](
[id] [int] IDENTITY(1,1) NOT NULL,
[name] [nvarchar](50) NULL,
[result] [int] NULL
)
insert into [test](name,result) values('张三',90)
insert into [test](name,result) values('李四',80)
insert into [test](name,result) values('王五',70)
合并后的结果为:
列名 张三 李四 王五
内容 90 80 70
不能写死了,因为正式功能可能会有很多人