本人用的是数据库是Mysql
有以下三个表:
create table 学生(
学号 varchar(255),
姓名 varchar(255),
班级名 varchar(255));
create table 课程(
课程号 varchar(255),
课程名 varchar(255));
create table 成绩(
学号 varchar(255),
课程号 varchar(255),
分数 int);
问题:
把班级'班(3)'的学生成绩按以下格式显示
----- ----- ----- -----
姓名 |数学 |语言 |物理
------解决方案--------------------
- SQL code
selecta.学号,sum(b.数学成绩'),sum(b.语文成绩'),sum(b.物理成绩'),from 学生 aleft join(select成绩.学号(CASE WHEN 成绩.课程号 = '数学CODE' THEN 成绩.分数 ELSE 0 END) AS '数学成绩',(CASE WHEN 成绩.课程号 = '语文CODE' THEN 成绩.分数 ELSE 0 END) AS '语文成绩',(CASE WHEN 成绩.课程号 = '物理CODE' THEN 成绩.分数 ELSE 0 END) AS '物理成绩'FROM 成绩LEFT JOIN课程ON成绩.课程号=课程.课程号) bon a.学号 = b.学号group by a.学号
------解决方案--------------------
- SQL code
select s.姓名, sum(CASE WHEN sc.课程号 = '数学' THEN sc.分数 ELSE 0 END) as 数学, sum(CASE WHEN sc.课程号 = '语言' THEN sc.分数 ELSE 0 END) as 语言, sum(CASE WHEN sc.课程号 = '物理' THEN sc.分数 ELSE 0 END) as 物理from (学生 s inner join 成绩 sc on s.学号=sc.学号) inner join 课程 c on sc.课程号=c.课程号where s.班级名='班(3)'group by s.姓名