SQL显示最大计数

时间:2015-04-19 03:17:11

标签: sql join count max sql-server-2014

我正在使用SQL Server 2014.我有两个表Member和MemberPosition。 MemberPostion表记录数据库中每个成员的历史记录。 memberID是成员表中的主键,是MemberPosition表中的外键。我需要归还占据最多位置的成员。 这是我正在使用的查询:

Select 
M.MemberFName + ' ' + M.MemberLName as Name

from Member M

Join MemberPosition MP
ON MP.MemberID = M.MemberID

Group By M.MemberFName + ' ' + M.MemberLName

Having Count(MP.MemberID) = (Select max(P) from
                                    (Select Count(MP.MemberID) as P From MP))

我在最后一个附近收到错误) 它告诉我文件结尾附近的语法错误'。期待AS,ID或QUOTED_ID。

你能告诉我我做错了吗?我试过跟随论坛中的其他例子,但我无法弄明白。

1 个答案:

答案 0 :(得分:1)

from子句中的子查询需要别名。在您的情况下,这深埋在having子句中:

Select M.MemberFName + ' ' + M.MemberLName as Name
from Member M Join
     MemberPosition MP
     ON MP.MemberID = M.MemberID
Group By M.MemberFName + ' ' + M.MemberLName
Having Count(MP.MemberID) = (Select max(P)
                             from (Select Count(MP.MemberID) as P
                                   From MP
                                  ) p
------------------------------------^
                            );

还有其他方法可以按照您的要求执行操作。

这是另一种选择:

Select TOP 1 WITH TIES M.MemberFName + ' ' + M.MemberLName as Name
from Member M Join
     MemberPosition MP
     ON MP.MemberID = M.MemberID
Group By M.MemberFName + ' ' + M.MemberLName
ORDER BY COUNT(*) DESC;