创建 SQL 视图以显示每个科目的分数和每个学生的总分数

Create SQL view to show mark for each subject and total of marks for each student

我需要从这 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'), (2, 'Science'), (3, 'English')

INSERT INTO Exam 
VALUES (1, 1, 10), (1, 2, 9), (1, 3, 8),
       (2, 1, 9), (2, 2, 10), (2, 3, 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