按特定属性对表进行排序

时间:2013-10-08 13:04:03

标签: sql-server

我写了一个查询,以便在每门课程中找到学生成绩 我还需要按照他们的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

2 个答案:

答案 0 :(得分:0)

据我所知,你无法通过ID和Marks同时按两个属性对表进行排序。我这样说是因为,如果订单与这两个属性相矛盾,那该怎么办呢。

答案 1 :(得分:0)

在你的情况下,我建议写一个不同的查询,通过他们的Mark返回学生,并在输出表之间做一个UNION

查看更多信息here