我正在使用MS Access数据库。我有一个表(Proposal)具有以下属性: ProposalID - PK,Title,RequestedAmount,ResearcherID - FK
我想运行一个SQL查询来获取请求最高金额的候选人。 我的查询不起作用是:
Select ProposalID, Title, Max(RequestedAmount) AS Budget, ResearcherID
From
Proposal;
我该如何解决这个问题..谢谢
答案 0 :(得分:1)
你能试试这个
吗?SELECT TOP 1 Proposal.ProposalID, Proposal.Title, (Select MAX(Proposal.RequestedAmount) from Proposal) AS Budget, Proposal.ResearcherID FROM Proposal;
希望这会有所帮助......
答案 1 :(得分:0)
使用GROUP BY
Select ProposalID, Title, Max(RequestedAmount) AS Budget, ResearcherID
From
Proposal GROUP BY proposalID;
这是因为您在SQL SELECT语句中列出了多个未封装在MAX函数中的列,这就是您必须使用SQL GROUP BY子句的原因。
答案 2 :(得分:0)
在使用查询的聚合函数中,所有选定的值必须为
1)在
组中2)聚合函数。
这是因为max不是唯一的聚合函数 - 想象一下如果使用AVG而不是MAX。 SQL必须为其他行提供什么值,仅适用于一行?没有办法选择,这就是为什么你不能表达这样的查询。
但是你想要的不是聚合,而是找到具有最高RequestedAmount的行。我们这样做:
Select ProposalID, Title, RequestedAmount AS Budget, ResearcherID
From
Proposal
Where Budget >= ALL (select RequestedAmount from Proposal)
答案 3 :(得分:0)
Select ProposalID, Title, RequestedAmount AS Bugdet, ResearcherID
From Proposal
WHERE RequestedAmount = (SELECT MAX(RequestedAmount) FROM Proposal);
你可以尝试一下......