2016-07-19 3 views
1
입니다.

다음 쿼리는 상위 10 개를 선택합니다. 그러나 결과는 11 개 행을 보여 주며 선택을 상위 20 개로 변경하면 21 개가 표시됩니까?상위 10 개를 선택하십시오. 그러나 결과는

이 문제의 원인이되는 쿼리에 문제가 있습니까?

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 액세스가 TOP을 처리 할 때 마지막 값으로 모든 연결을 넣습니다. SQL Server에서는 TOP WITH TIES과 같습니다. 따라서 11 번째 줄의 숫자가 10 번째 숫자와 같으면 숫자가 같은 경우 12 번째 숫자가 포함됩니다.

이 문제를 해결하려면 일종의 타이 브레이커가 필요합니다. GROUP BY에서는 날짜가됩니다. 쉬운 방법은 다음과 같습니다.

ORDER BY Count(Shifts.ID) DESC, MIN(DutyDate) 
관련 문제