我有这个查询,我试图获得零售店卖家的最大年龄(有多个城镇),如果有多个人的年龄(最大)相同,则显示多个。我正在使用Microsoft Access2010。这是查询:

SELECT Linnad.Linn, Myyjad.Nimi, Max(Myyjad.Vanus) As Vanus
FROM Linnad INNER JOIN Myyjad ON Linnad.LinnID = Myyjad.LinnID
GROUP BY Linnad.Linn, Myyjad.Nimi
ORDER BY Linnad.Linn;


问题是,它似乎忽略了MAX,仅显示了所有值,并且无法删除Myyjad.Nimi的组,因为它给了我一个错误,即Myyjad.Nimi不包含聚合函数。

输出应为:
城镇-名称-年龄上限

另外,Linn =城镇,Nimi =名称,Vanus =年龄。

最佳答案

我认为这可能是您要寻找的:

SELECT L.Linn, M.Nimi, M.Vanus
FROM Linnad As L,
(
SELECT M2.LinnID, M2.Nimi, M2.Vanus
FROM Myyjad As M2
WHERE M2.Vanus = (SELECT Max(Z.Vanus) FROM Myyjad As Z WHERE Z.LinnID = M2.LinnID)
) As M
WHERE M.LinnID = L.LinnID


这将执行一次子选择,以获取所有Nimi都显示最大Vanus的Linn ID的列表,然后我们通过LinnID将此子选择链接回Linnad表。

09-26 23:14