2016-07-19 46 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)