SQL Server GROUP BY进退两难

Mic*_*eyn 2 sql t-sql sql-server-2008 sql-server-2008-r2

我有一个表,其中的行包含一个名为的列MySubId.此列中的值可以重复.我想找到最多出现的值的MySubId值和行数MySubId.

我有以下查询:

SELECT MySubId, COUNT(MySubId) AS MySubIdCount
FROM MyTable
GROUP BY MySubId
HAVING COUNT(MySubId)=MAX(COUNT(MySubId))
Run Code Online (Sandbox Code Playgroud)

但我得到错误:

消息130,级别15,状态1,行4无法对包含聚合或子查询的表达式执行聚合函数.

用简单的查询不可能做到这一点吗?在HAVING子句中使用它之前,我是否必须嵌入子查询来计算MAX ?

更新:

我看到很多anwers通过使用过滤结果集TOP 1,所以我假设没有办法使用该MAX函数将此查询过滤到最大出现MySubId值?

Ral*_*ton 6

select top 1 with ties MySubId, Count(MySubId) as MySubIdCount
from MyTable
group by MuSubId
order by 2 desc
Run Code Online (Sandbox Code Playgroud)