我正在使用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。
你能告诉我我做错了吗?我试过跟随论坛中的其他例子,但我无法弄明白。答案 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;