我写了一个查询,以便在每门课程中找到学生成绩 我还需要按照他们的ID顺序对显示学生进行排序,我需要一个额外的属性,根据他的标记显示他的订单
ALTER PROC [dbo].[REPStudentMarks]
(
@pClassID int,
@pSectionID int = null
)
AS
--Users.ClassID, Users.SectionID,
SELECT Users.FirstName, courses.Name, sum(UserExams.StudentMark) Mark,
ClassCourses.Minmark, ClassCourses.Maxmark
FROM courses
INNER JOIN Exams ON courses.CourseID = Exams.CourseID
INNER JOINUserExams ON Exams.ExamID = UserExams.ExamID
INNER JOIN Users ON UserExams.UserID = Users.UserID
INNER JOIN ClassCourses ON courses.CourseID = ClassCourses.CourseID
AND Exams.ClassID = ClassCourses.ClassID
AND Exams.CourseID = ClassCourses.CourseID
-- where Users.userID=1
group by Users.FirstName,courses.Name,ClassCourses.Minmark,ClassCourses.Maxmark,Users.ClassID,Users.SectionID
order by mark,Name desc
执行此查询后我得到的行就像这样
FirstName, cName, sum(UserExams.StudentMark) Mark, Minmark, Maxmark,'Class Rankings', 'SectionRankings'
SAM,数学,90.0,50.0,100.0,1,1
答案 0 :(得分:0)
据我所知,你无法通过ID和Marks同时按两个属性对表进行排序。我这样说是因为,如果订单与这两个属性相矛盾,那该怎么办呢。
答案 1 :(得分:0)
在你的情况下,我建议写一个不同的查询,通过他们的Mark返回学生,并在输出表之间做一个UNION
。
查看更多信息here