2016-07-19 2 views
1

У меня есть следующий запрос, чтобы выбрать 10 лучших. Однако результат показывает 11 строк, когда я меняю выбор на 20, он показывает 21?Выберите Топ 10, но 11 Результаты

Есть что-то неправильно с запросом, вызывающим это?

SELECT TOP 10 Format([DutyDate],"ddd"", ""dd-mmm-yy") AS [Shift Date], Count(Shifts.ID) AS Shifts 
FROM Shifts 
GROUP BY Format([DutyDate],"ddd"", ""dd-mmm-yy") 
ORDER BY Count(Shifts.ID) DESC; 
+0

Попробуйте добавить LIMIT 10 в конце запроса. –

ответ

6

Когда MS Access обрабатывает TOP, он помещает все связи в течение последнего значения. В SQL Server это будет эквивалентно TOP WITH TIES. Итак, если 11-я строка имеет тот же счет, что и 10-й, тогда она включена - и 12-го и так далее, если подсчеты совпадают.

Чтобы исправить это, вам необходимо включить какой-то тай-брейк. В GROUP BY это будет дата. Вот простой способ:

ORDER BY Count(Shifts.ID) DESC, MIN(DutyDate) 
Смежные вопросы