0

我编写查询以查找他参加的每门课程的学生成绩我还需要按他们的 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'

山姆,数学,90.0,50.0,100.0,1,1

4

2 回答 2

0

在您的情况下,我建议编写一个不同的查询,该查询按学生的标记返回学生,并UNION在输出表之间执行。

在此处查看更多信息

于 2013-10-08T13:47:41.640 回答
0

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

于 2013-10-08T13:20:39.440 回答