Нахождение звания студента -Sql Compact - PullRequest
1 голос
/ 22 мая 2010

У меня есть такая таблица:

Имя Мар1 Мар2 Мар3 Итого

ххх 80 80 80 240

ггг 60 70 50 180

AAA 85 65 75 225

Я хотел найти звание студента на основе итогов. Я использовал SQL Compact 3.5. Поскольку у нас есть функция rank () на сервере sql, есть ли у нас что-то, с помощью чего мы можем найти ранг студентов ??? Когда я использовал "выберите Total, rank () более (порядок по итогу) i1 из меток "выдает ошибку как

» Большая ошибка 0x80040E14, малая ошибка 25501

выберите Итого, ранг () больше (порядок по итогу) i1 из меток Произошла ошибка при разборе запроса. [Номер строки токена = 1, смещение строки токена = 21, ошибка токена = больше] «

Есть ли в Sql Compact поддержка rank () или нет?

1 Ответ

1 голос
/ 24 мая 2010

По результатам поиска кажется, что over () не работает с sql-compact.Итак, я попробовал концепцию самостоятельного соединения, как в здесь .Просто я изменил запрос, чтобы он правильно работал с дублирующимися значениями.Удалить знак равенства.Модифицированный запрос:

SELECT a1.Name, a1.Total, COUNT(a2.Total) Rank
  FROM StMarks a1, StMarks a2
 WHERE a1.Total < a2.Total or (a1.Total=a2.Total and a1.Name = a2.Name)
GROUP BY a1.Name, a1.Total
ORDER BY a1.Total DESC, a1.Name DESC;

Теперь он отлично работает.

...