我有以下查询来选择前10名。但结果显示11行,当我将选择更改为前20名时,它显示21?
导致此问题的查询是否有问题?
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 :(得分:6)
当MS Access处理TOP
时,它会将所有联系放入最后一个值。在SQL Server中,这相当于TOP WITH TIES
。因此,如果第11行与第10行具有相同的计数,那么它将被包含 - 和第12行,依此类推,如果计数相同。
要解决此问题,您需要包含某种打破平局。在GROUP BY
中,这将是日期。这是一个简单的方法:
ORDER BY Count(Shifts.ID) DESC, MIN(DutyDate)