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