新建视图的时候为什么会报错啊?gradID和gradname都在student表里

关注引自免费微信小程序:皆我百晓生
在创建视图V_StuSelectCourse时,您遇到了一个错误,即消息8120,这通常是因为在聚合查询(如AVG()或SUM())中,选择了未在GROUP BY子句中包含的非聚合列。在这个情况下,问题出在S.GradID和S.GradName这两列上。
为了解决这个问题,您需要在SELECT语句中添加GROUP BY子句,并将所有非聚合列包含其中。考虑到您的需求是按学生ID和姓名分组并计算平均成绩和总学分,可以这样修改您的视图定义:
CREATE VIEW V_StuSelectCourse
(
ID,
Name,
Gavg,
TotalCredit
)
AS
SELECT
S.GradID,
S.GradName,
AVG(SC.score),
SUM(C.Credit)
FROM
TB_Course_Info C
JOIN
TB_Student_Info S ON SC.CourseID = C.CourseID
JOIN
TB_Select_Course sC ON SC.GradID = S.GradID
GROUP BY
S.GradID,
S.GradName;
这个修正后的CREATE VIEW语句包含了GROUP BY S.GradID, S.GradName,这意味着结果集会根据学生的ID和姓名进行分组,然后对每个组应用AVG(SC.score)和SUM(C.Credit)操作。这样就解决了错误消息8120,并且应该能正确地创建视图了。记得运行这个SQL命令后,刷新您的视图以查看新创建的视图V_StuSelectCourse。