VerySource

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

在线等:sql 列转行的问题,高手进,

[复制链接]

1

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2021-3-6 15:30:01 | 显示全部楼层 |阅读模式
我有两个表,一个年级考试的课程表,examsubject
由于成绩表里面包含了所有课程的成绩,所以有的年级有这个课程,有的没有,所以在成绩查询时,我搞了二表
examlistid    课程   ClassID
1             语文      1
2             数学      1
3             英语      1
4             物理      2
5             化学      2
还有一个全校的成绩表:[20161230]
学号  语文 数学 英语 物理 化学 生物 地理 政治 历史
111    50   50   50  NULL NULL  60   60   60   60
112    50   50   50  NULL NULL  65   65   65   65

我想通过表examsubject的ClassID值得到课程名,然后生成一个成绩查询,
生成如下样式:ClassID=1,成绩是[20161230]里面的值
学号  语文 数学 英语
111    50   5    50
112    50   50   50
当ClassID=2时
生成的成绩表样式为:
学号 物理 化学
xx    xx   xx
xx    xx   xx

回复

使用道具 举报

0

主题

21

帖子

16.00

积分

新手上路

Rank: 1

积分
16.00
发表于 2021-3-6 15:45:01 | 显示全部楼层
try
-------------------------

declare @sql varchar(8000),@ClassID int
set @ClassID=2

set @sql = 'select 学号'
select @sql = @sql + ',' + 课程 from examsubject where ClassID=@ClassID
set @sql = @sql + ' from [20161230]'
exec(@sql)
回复

使用道具 举报

0

主题

21

帖子

16.00

积分

新手上路

Rank: 1

积分
16.00
发表于 2021-3-6 16:00:01 | 显示全部楼层
--建立存储过程
create procedure spExam
@ClassID int
as

declare @sql varchar(8000)
set @sql = 'select 学号'
select @sql = @sql + ',' + 课程 from examsubject where ClassID=@ClassID
set @sql = @sql + ' from [20161230]'
exec(@sql)

--调用
spExam 1
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2021-3-6 17:15:01 | 显示全部楼层
楼上高手,同意!
回复

使用道具 举报

0

主题

1

帖子

26.00

积分

新手上路

Rank: 1

积分
26.00
发表于 2021-8-31 06:22:43 | 显示全部楼层
666666666666666666
回复

使用道具 举报

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

本版积分规则

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

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