【发布时间】:2015-03-19 14:42:14
【问题描述】:
我有两个 SQL Server 表...
MODULES ENROLMENTS
GroupNo StudentNo
Title GroupNo
Tutor CourseworkMark
DayNo ExamMark
Time
Room
Semester
在 Access 中,我创建了一个基于另一个表的表单,该表包含课程编号和名称的记录。对于每门课程,我希望为该特定课程中的模块创建一个子表单。
在子表单视图中,我希望有 GroupNo、Title、Tutor、DayNo、Time、Room、Semester、CourseworkMark 的平均值和 ExamMark 的平均值。
我已经构建了这个查询
SELECT tblEnrolments.GroupNo, Tutor, DayNo, Time, Room, Semester,
AVG(CourseworkMark) AS AvgCourseworkMark, AVG(ExamMark) AS AvgExamMark
FROM tblEnrolments INNER JOIN tblModules ON tblEnrolments.GroupNo = tblModules.GroupNo
GROUP BY tblEnrolments.GroupNo;
但是,我得到了错误
消息 8120,第 16 级,状态 1,第 1 行 列 'tblModules.Tutor' 在选择列表中无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
当我运行它时。如何在查询中获取 Tutor、DayNo、Time、Room 和 Semester 字段,因为它们不属于 GROUP BY 或 AVG。谢谢
【问题讨论】:
-
您需要在
group by中包含所有非聚合列。错误信息对我来说似乎很清楚。如果这不能解决您的问题,您应该包括示例数据和所需的结果。 -
将
Tutor, DayNo, Time, Room, Semester添加到group by子句中。 -
你的标题是“SQL Server”。您的问题是“访问”。是哪个?
-
啊,呃,没想到要试试。谢谢你们!
标签: sql sql-server group-by average