如何解决创建 SQL 视图以显示每个科目的分数和每个学生的总分
我需要从这 3 个表中创建一个视图,以显示此屏幕截图中的数据:
创建这 3 个表:
CREATE TABLE Student
(
idStu int PRIMARY KEY,name varchar(30)
)
CREATE TABLE Subjects
(
idSub int PRIMARY KEY,subjName varchar(30)
)
CREATE TABLE Exam
(
idStu int REFERENCES Student,idSub int REFERENCES Subjects,Mark float,CONSTRAINT idStu_idSub PRIMARY KEY(idStu,idSub)
)
然后我插入一些值:
INSERT INTO Student
VALUES (1,'Jacob'),(2,'Amilee')
INSERT INTO Subjects
VALUES (1,'Mathematics'),'Science'),(3,'English')
INSERT INTO Exam
VALUES (1,1,10),(1,2,9),3,8),7)
解决方法
您需要条件聚合(又名 PIVOT
)
CREATE VIEW View_MyHomeworkThatICantBeBotheredToDo
AS
SELECT
Student = stu.name,Mathematics = SUM(CASE WHEN sub.subjName = 'Mathematics' THEN e.Mark END),Science = SUM(CASE WHEN sub.subjName = 'Science' THEN e.Mark END),English = SUM(CASE WHEN sub.subjName = 'English' THEN e.Mark END),Total = SUM(e.Mark)
FROM Student stu
JOIN Exam e ON e.idStu = stu.idStu
JOIN Subjects sub ON sub.idSub = e.idSub
GROUP BY stu.idStu,stu.name;
GO
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。