我正在使用以下语句
SELECT TOP 5 rootcause, COUNT(IIF(accountability="Team 1",1,0)) FROM MOAQ WHERE CDT=1 GROUP BY rootcause
MOAQ是另一个查询,它从4个表返回大约20个字段,没什么特别的。这按预期工作,我得到5个结果。
MOAQ
如果我ORDER BY在条件字段上添加一个子句,尽管我开始得到8个结果。如果我按第一个字段排序,那没有问题。
ORDER BY
有人知道会发生什么吗?
编辑以澄清 -我目前仅在Access 2003中进行测试,最终的语句将通过Excel前端通过ADO进行参数化查询。
这是topAccess中指令的一个已知效果,但不是很广为人知。
top
该top指令不会返回最重要的n项目,因为很容易让人相信。相反,它至少返回n由结果的顺序确定的不同项目。
n
在大多数情况下是相同的,但是在您的示例中,第5到第8项具有相同的订购值,所有这些都包括在内。它返回前五个项目,然后返回所有与第五个项目具有相同订购值的项目。
如果不对表进行任何排序,则将考虑所有字段,因此,如果结果中有唯一字段,查询将始终返回五项。当然,如果订购中包含唯一字段,则同样如此。
SQL的其他方言的行为可能有所不同。例如,top仅在T-SQL(SQL Server)中的伪指令永远不会返回多于n项。然而,通过指定的条款with ties和order by一起top,人们可以观察到相同的行为在Access中。
with ties
order by