【发布时间】:2015-05-04 09:24:06
【问题描述】:
我有一个包含以下表格的数据库:
-
Students_T(SNo, SDedc, SAAddress) -
Courses_T(CNo, CDesc) -
CoursesRegister_T(CRNo, CR_CNo, CR_SNo, CRGrade)
我需要表示以下数据:
对于每个学生表演:
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 *, avg(CR_Grade)
它无法执行。
【问题讨论】:
-
“我想不通。”弄清楚什么?如何使用临时表?如何选择临时表?
-
“它无法执行”,为什么不呢?错误信息是什么,错误告诉你什么?
-
据说 - “列 '#Grades.CR_ST_No' 在选择列表中无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。”
-
那条错误信息告诉你什么?它表示什么?
-
但 #Grades.CR_ST_No 是 group by 的一部分。如果我能很好地理解该组的含义。
标签: sql sql-server sql-server-2008 left-join select-into