訪問無法分組數據!
在本例查詢中,
SELECT [Account Transactions].ID, [Account Transactions].Transaction_Amount, * FROM [Account Transactions] GROUP BY [Account Transactions].ID, [Account Transactions].Transaction_Amount;
這個想法是對帳戶 Transaction.ID 進行分組,並為同一 ID 的所有交易擷取 tracaction_amount 的總和。
程式碼由 Access 2016 生成,執行時我得到:
不能對帶有“*”的欄位進行分組
有趣的是,我可以生成具有相同分組的報告,並且效果很好。
分組可能是相同的,但您在所選欄位的末尾有一個星號(選擇所有欄位的快捷方式,但順序未知,阻止分組和聚合)會導致錯誤。
如果你想得到
Transaction_Amount
每人的總和,ID
你只需分組而ID
不是按Transaction_Amount
SELECT Sum([Account Transactions].Transaction_Amount) As SumAmount , [Account Transactions].ID FROM [Account Transactions] GROUP BY [Account Transactions].ID
ComputerVersteher的回答涉及到這一點,但要更明確地解決它:
Access 會準確地告訴您問題所在。在列表中使用
GROUP BY
時不能使用。*``SELECT
請注意,這
SELECT *
表示在執行語句時包含表中的每一列。在您的情況下,您實際上包含了ID
和Transaction_Amount
列的第二個副本。所以,首先 - 在您的
SELECT
列表中有多個具有相同名稱/別名的列是一個壞主意。如果你真的想擁有ID
並Transaction_Amount
包含多次,最好提供一個別名,這樣結果集中的列都有唯一的名稱。帶有 a 的 SQL 語句
GROUP BY
對列表中的內容有限制SELECT
。列表中的每一列都SELECT
應該在GROUP BY
列表中,或者應該在聚合函式中(如SUM()
)。根據定義,使用 包含的所有列*
都不能在聚合函式中。您不能*
在GROUP BY
子句中使用。由於您必須在 中明確指定列GROUP BY
,因此如果將任何新列添加到表中,您將自動獲得無效語句。因此,Access 會阻止您一起使用SELECT *
和GROUP BY
。您確定您沒有修改 Access 生成的程式碼嗎?如果它會生成無法執行的程式碼,我會感到驚訝。