SQL Server中学生临时表的平均成绩

SQL Server中学生临时表的平均成绩,sql,sql-server,sql-server-2008,left-join,select-into,Sql,Sql Server,Sql Server 2008,Left Join,Select Into,我有一个包含以下表格的数据库: 学生们,SDedc,SAddress 课程编号:CNo、CDesc 课程注册编号、注册编号、注册编号、注册等级 我需要表示以下数据: 对于每个学生表演: Student desc, Course desc, Course grade, Grades average 我需要为学生注册的每门课程做这个 例如: 如果学生A注册参加课程B,且成绩为90分 他也注册了C课程,成绩是70,我想可以得到下表: A B 90 80 A C 70 80 重要的是,我需要使用带有

我有一个包含以下表格的数据库:

学生们,SDedc,SAddress 课程编号:CNo、CDesc 课程注册编号、注册编号、注册编号、注册等级 我需要表示以下数据:

对于每个学生表演:

Student desc, Course desc, Course grade, Grades average
我需要为学生注册的每门课程做这个

例如:

如果学生A注册参加课程B,且成绩为90分 他也注册了C课程,成绩是70,我想可以得到下表:

A B 90 80
A C 70 80
重要的是,我需要使用带有SELECT INTO语法的临时表,但我无法理解

我正在使用SQL Server

有人知道怎么做吗

编辑:

我已经这样做了:

select CR_ST_No, ST_Desc, CR_Desc, CR_Grade
into #Grades
from Students_T
left join CoursesRegister_T on CR_ST_NO = ST_No
where CRS_Desc is not null

select *
from #Grades 
drop table #Grades
它给了我一张表格,上面有我需要的所有数据,除了平均数

当我尝试将行select*更改为select*时,avgCR\U Grade
它无法执行。

这是窗口函数的典型用例。您尚未提供任何示例数据,我现在无法对其进行测试,但类似的方法应该可以工作:

SELECT s.SDedc, c.CDesc, r.CRGrade, AVG(r.CRGrade) OVER (PARTITION BY s.SNo) AS average_grade 
    FROM Students_T             AS s 
    LEFT JOIN CoursesRegister_T AS r ON r.CR_SNo = s.SNo 
    LEFT JOIN Courses_T         AS c ON r.CR_CNo = c.CNo;

根据您的问题和随后的评论,您需要更改select语句以包含GROUPBY子句

请通读这篇文章,了解select语句的结构,并给出每一部分的解释和示例


您收到错误消息的原因是,是一个聚合函数,因此需要将不属于聚合的所有列包括在select语句的group by子句中。

我无法理解。弄明白了什么?如何使用临时表?如何选择进入临时表?它不能执行,为什么不能?错误消息是什么?错误告诉您什么?它说-列“Grades.CR_ST__No”在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。错误消息告诉您什么?它表明了什么?但是Grades.CR_ST__No是组by的一部分。如果我能很好地理解团队的意思。