2016-07-19 7 views
1

Ich habe die folgende Abfrage, um Top 10 auszuwählen. Allerdings zeigen das Ergebnis 11 Zeilen, wenn ich die Auswahl zu Top 20 ändern, zeigt es 21?Wählen Sie Top 10, aber 11 Ergebnisse

Gibt es etwas falsch mit der Abfrage, die das verursacht?

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

Versuchen Sie, LIMIT 10 am Ende der Abfrage hinzuzufügen. –

Antwort

6

Wenn MS Access TOP verarbeitet, bringt es alle Verbindungen in für den letzten Wert. In SQL Server entspricht dies TOP WITH TIES. Also, wenn die 11. Reihe die gleiche Zählung wie die 10. hat, dann ist sie enthalten - und die 12. usw., wenn die Zählungen gleich sind.

Um dies zu beheben, müssen Sie eine Art Tie-Breaker hinzufügen. In einer GROUP BY wäre das das Datum. Hier ist eine einfache Methode:

ORDER BY Count(Shifts.ID) DESC, MIN(DutyDate)