0

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

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

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

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

4

4 回答 4

1

你能试试这个吗

SELECT TOP 1 Proposal.ProposalID, Proposal.Title, (Select MAX(Proposal.RequestedAmount) from Proposal) AS Budget, Proposal.ResearcherID FROM Proposal;

希望这可以帮助....

于 2013-05-10T05:38:00.990 回答
0

采用GROUP BY

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

这是因为您在 SQL SELECT 语句中列出了多个未封装在 MAX 函数中的列,这就是您必须使用 SQL GROUP BY 子句的原因。

于 2013-05-10T05:27:19.863 回答
0

在使用查询的聚合函数中,所有选定的值必须是

1)在组中

2)聚合函数。

这是因为 max 不是唯一的聚合函数 - 想象一下,如果您使用 AVG 而不是 MAX。SQL 必须为仅适用于一行的其他行提供什么值?没有办法选择,这就是为什么你不能表达这样的查询。

但是您想要的不是聚合而是查找具有最高 RequestedAmount 的行。所以让我们这样做:

Select ProposalID, Title, RequestedAmount AS Budget, ResearcherID
From
Proposal
Where Budget >= ALL (select RequestedAmount from Proposal)
于 2013-05-10T05:27:35.030 回答
0
Select ProposalID, Title, RequestedAmount AS Bugdet, ResearcherID
From Proposal
WHERE RequestedAmount = (SELECT MAX(RequestedAmount) FROM Proposal);

你可以试试这个...

于 2013-05-10T05:55:37.217 回答