web-dev-qa-db-ja.com

MS-Access-指定された集計関数を含まないクエリを実行しようとしました

SELECT SUM(orders.quantity) AS num, fName, surname
FROM author
INNER JOIN book ON author.aID = book.authorID;

「集計関数の一部として指定された式「fName」を含まないクエリを実行しようとしました。どうすればよいですか?

17
blahblahvvvvv

エラーは、fNameSELECTリストに含まれていますが、GROUP BY句には含まれておらず、集約関数の一部ではないためです(Count()Min()Max()Sum()など)

fNameGROUP BYに含めることで、この問題を修正できます。ただし、surnameでも同じ問題に直面します。両方をGROUP BYに入れてください:

SELECT
    fName,
    surname,
    Count(*) AS num_rows
FROM
    author
    INNER JOIN book
    ON author.aID = book.authorID;
GROUP BY
    fName,
    surname

Count(*)が必要な場所でSUM(orders.quantity)を使用しました。ただし、ordersはクエリのFROMセクションに含まれていないため、フィールドの1つをSum()する前に含める必要があります。

Accessを使用できる場合は、クエリデザイナーでクエリを作成します。可能な機能を理解し、正しいAccess SQL構文を適用するのに役立ちます。

25
HansUp

MS-Accessクエリで同様の問題が発生しましたが、同等のfNameを(「Group By」や「Sum」ではなく)「Expression」に変更することで解決しました。すべてのフィールドが「式」である限り、AccessクエリビルダーはGroup By句の最後。enter image description here

4
LeftyMaus

GROUP BYは、MS Accessのクエリデザインビューの[合計]行から選択できます。
合計行がデザインビューに表示されない場合(私の場合)。 SQLビューに移動し、fnameなどでGROUPを追加できます。合計行はデザインビューに自動的に表示されます。
計算フィールドの場合、この行の式として選択する必要があります。

0
saleem kalro