2013-10-08 6 views
0

Я пишу запрос, чтобы найти студентский класс в каждом курсе, который он принимает Мне также нужно отсортировать учащегося в своем заказе на идентификатор, и мне нужно, но дополнительный атрибут, который показывает его заказ на основе его МаркаСортировка таблицы по конкретному атрибуту

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 

строки я получаю после Exec этот запрос, как этот

FirstName, cName, sum(UserExams.StudentMark) Mark, Minmark, Maxmark,'Class Rankings', 'SectionRankings' 

Сэму, Math, 90.0,50.0,100.0,1,1

ответ

0

насколько я знаю, вы не можете ЗАПИСЬ таблицу двумя атрибутами одновременно по идентификаторам и знакам. Я говорю это, потому что, если порядок противоречит двум атрибутам.

+0

Вы можете использовать приписывать, чтобы с помощью и не даете и не ошибки , но я в моем случае мне нужно приказать UserID но второй заказ не через порядок я нужен некоторый алгоритм для сортировки они основаны на их знаке, я имею в виду, что если сам получил самую высокую оценку во всем классе, то рейтинг класса - 1 , а декан получил 5-ю самую высокую оценку в целом классе, тогда рейтинг класса 5 и т. д. – abodvdv

+0

Да, это то, что я пытаясь сказать. Вы получили результаты, заказанные UserID. Теперь, если по некоторому алгоритму вы отсортировали результат на основе Marks, тогда упорядочение по UserID не имеет смысла. правильно ? Вы можете заказать по Marks и добавить столбец добавления в результирующий набор 'rank', который в основном увеличивает значение для каждой строки (s.no вы говорите) – Dusht

0

В вашем случае я бы предложил написать другой запрос, который возвращает учеников по их знаку и делает UNION между выходными таблицами.

увидеть больше информации here

Смежные вопросы