纵转换为横。
有表:test(name char(10),km char(10),cj int)
name km cj
----------------------------------------------
张三 语文 80
张三 数学 86
张三 英语 75
李四 语文 78
李四 数学 85
李四 英语 78
要求以横向格式显示,即:
想变成
姓名 语文 数学 英语
----------------------------
张三 80 86 75
李四 78 85 78
Create table test (name char(10),km char(10),cj int)
go
insert test values( '张三 ', '语文 ',80)
insert test values( '张三 ', '数学 ',86)
insert test values( '张三 ', '英语 ',75)
insert test values( '李四 ', '语文 ',78)
insert test values( '李四 ', '数学 ',85)
insert test values( '李四 ', '英语 ',78)
方法:
declare @sql varchar(8000)
set @sql = 'select name '
select @sql = @sql + ',sum(case km when ' ' '+km+ ' ' ' then cj end) [ '+km+ '] '
from (select distinct km from test) as a
select @sql = @sql+ ' from test group by name '
exec(@sql)
请问如何将exec(@sql)的执行的结果写入表中(临时表也可以)
------解决方案--------------------
--try
declare @sql varchar(8000)
set @sql = 'select name '
select @sql = @sql + ',sum(case km when ' ' '+km+ ' ' ' then cj end) [ '+km+ '] '
from (select distinct km from test) as a
select @sql = @sql+ ' into #T from test group by name '
exec(@sql)
select * from #T
------解决方案--------------------
insert into #临时表
exec(@sql)
========
少写了一句话
create table #临时表(……)