VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 706|回复: 4

请问如何将exec(@sql)的执行的结果写入表中(临时表也可以)

[复制链接]

1

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-2-11 16:00:01 | 显示全部楼层 |阅读模式
纵转换为横。
有表: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)的执行的结果写入表中(临时表也可以)

回复

使用道具 举报

0

主题

35

帖子

22.00

积分

新手上路

Rank: 1

积分
22.00
发表于 2020-4-7 09:30:01 | 显示全部楼层
insert into #临时表
exec(@sql)
回复

使用道具 举报

0

主题

211

帖子

108.00

积分

新手上路

Rank: 1

积分
108.00
发表于 2020-4-7 11:15:01 | 显示全部楼层
--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
回复

使用道具 举报

0

主题

211

帖子

108.00

积分

新手上路

Rank: 1

积分
108.00
发表于 2020-4-7 17:00:01 | 显示全部楼层
--用全局臨時表可以嗎?局部臨時表不行

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
回复

使用道具 举报

0

主题

35

帖子

22.00

积分

新手上路

Rank: 1

积分
22.00
发表于 2020-4-7 21:45:01 | 显示全部楼层
insert into #临时表
exec(@sql)
========
少写了一句话
create table #临时表(……)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表