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
Select ProposalID, Title, RequestedAmount AS Bugdet, ResearcherID
From Proposal
WHERE RequestedAmount = (SELECT MAX(RequestedAmount) FROM Proposal);

あなたはこれを試すことができます...

于 2013-05-10T05:55:37.217 に答える
0

クエリを使用する集計関数では、選択されたすべての値が次のいずれかである必要があります。

1) によるグループ内

2) 集約関数。

これは、max が唯一の集計関数ではないためです。MAX の代わりに AVG を使用した場合を想像してください。1 つの行にのみ適用される他の行に、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

使用するGROUP BY

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

これは、MAX 関数にカプセル化されていない SQL SELECT ステートメントに複数の列をリストしたためです。これが、SQL GROUP BY 句を使用する必要がある理由です。

于 2013-05-10T05:27:19.863 に答える