查询每个学生的各科成绩sql语句
数据库中有三个表Student,Course,Grade分别表示学生,课程,成绩表的结构如下:Student(studentId,name,sex)分别表示:学号,姓名,...
数据库中有三个表 Student , Course, Grade 分别表示 学生, 课程,成绩
表的结构如下: Student( studentId, name, sex) 分别表示: 学号,姓名, 性别
Course ( cid , cname) 分别表示: 课程号,课程名
Grade ( gid, studentId , cid, score) 分别表示: 成绩编号, 学号, 课程号, 成绩
现在要查询每个学生的各科成绩和平均分
查询结果打印出的样式如下:
序号 姓名 性别 语文 数学 英语 哲学 平均成绩
1 王五 男 80 70 80 90 80
2 李明 女 90 70 70 80 77.5
列名 语文, 数学, 英语, 哲学 是 Course 中的课程名, 查询出的样式一定要与上面的一样,(假设 Course 表中 cname 只有四个 语文, 数学, 英语, 哲学)
在线等,如果答出来了,本人一定重赏 展开
表的结构如下: Student( studentId, name, sex) 分别表示: 学号,姓名, 性别
Course ( cid , cname) 分别表示: 课程号,课程名
Grade ( gid, studentId , cid, score) 分别表示: 成绩编号, 学号, 课程号, 成绩
现在要查询每个学生的各科成绩和平均分
查询结果打印出的样式如下:
序号 姓名 性别 语文 数学 英语 哲学 平均成绩
1 王五 男 80 70 80 90 80
2 李明 女 90 70 70 80 77.5
列名 语文, 数学, 英语, 哲学 是 Course 中的课程名, 查询出的样式一定要与上面的一样,(假设 Course 表中 cname 只有四个 语文, 数学, 英语, 哲学)
在线等,如果答出来了,本人一定重赏 展开
6个回答
2013-12-09
展开全部
SELECT 姓名,性别,课程名,成绩 INTO #tab
FROM Student s LEFT JOIN Grade g ON s.studentId=g.studentId LEFT JOIN Course c ON g.cid=c.id
DECLARE @sql VARCHAR(1000)
SET @sql='select 姓名,性别 '
SELECT @sql=@sql+' , max(case #tab.课程名 when '''+a.课程名 +''' then tb.result else 0 end )as ['+ a.课程名+ ']'
FROM (SELECT DISTINCT #tab.课程名 FROM #tab ) AS a
SET @sql=@sql+ ',avg(成绩) from #tab group by #tab.name '
EXEC ( @sql)
追问
你的这个SQL语句执行了没?怎么看起来不对
追答
CREATE TABLE Student
(
studentId VARCHAR(30),
[name] VARCHAR(30),
sex VARCHAR(20)
)
CREATE TABLE Course
(
cid VARCHAR(20),
cname VARCHAR(30)
)
CREATE TABLE Grade
(
gid VARCHAR(30),
studentId VARCHAR(30),
cid VARCHAR(20),
score INT
)
INSERT INTO Student
SELECT '1','王五' , '男' UNION ALL
SELECT '2','李明' , '女'
go
INSERT INTO Course
SELECT '1' , '语文' UNION ALL
SELECT '2' , '数学' UNION ALL
SELECT '3' , '英语' UNION ALL
SELECT '4' , '哲学'
go
Insert INTO Grade
SELECT '1' ,'1', '1','80' UNION ALL
SELECT '2' ,'1', '2','70' UNION ALL
SELECT '3' ,'1', '3','80' UNION ALL
SELECT '4' ,'1', '4','90' UNION ALL
SELECT '5' ,'2', '1','90' UNION ALL
SELECT '6' ,'2', '2','70' UNION ALL
SELECT '7' ,'2', '3','70' UNION ALL
SELECT '8' ,'2', '4','80'
SELECT [name],sex,cname,score INTO #tab
FROM Student s LEFT JOIN Grade g ON s.studentId=g.studentId LEFT JOIN Course c ON g.cid=c.cid
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |