获得最大价值

时间:2013-05-10 05:10:33

标签: database ms-access

我正在使用MS Access数据库。我有一个表(Proposal)具有以下属性: ProposalID - PK,Title,RequestedAmount,ResearcherID - FK

我想运行一个SQL查询来获取请求最高金额的候选人。 我的查询不起作用是:

Select ProposalID, Title, Max(RequestedAmount) AS Budget, ResearcherID
From
Proposal;

我该如何解决这个问题..谢谢

4 个答案:

答案 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);

你可以尝试一下......