【问题标题】:Expression not in aggregate or GROUP BY columns Exception表达式不在聚合或 GROUP BY 列中 异常
【发布时间】:2017-05-24 06:33:01
【问题描述】:

我在MS-Access 数据库中有一个名为ItemRates 的表,其中包含ItemID, ItemName, TotalFeet, RatePerItem, TotalRate 列,并且该数据库与我的java 应用程序相连。

当我运行以下查询时

String sql = "SELECT SUM(TotalRate) AS ItemRateSum, TotalFeet FROM ItemRates";

我得到以下异常

net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::3.0.7 expression not in aggregate or
GROUP BY columns: PUBLIC.ITEMRATES.TOTALFEET

我在StackOverflow 上看到了与此异常相关的其他问题,并且一个接受的答案建议在查询末尾添加GroupBy 子句。我添加了一个GroupBy 子句

String sql = "SELECT SUM(TotalRate) AS ItemRateSum, TotalFeet FROM 
ItemRates GROUPBY ItemName";

我得到了几乎相同的异常(冒号后面的两个异常之间略有不同)

net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::3.0.7 expression not in aggregate or 
GROUP BY columns: GROUPBY.TOTALFEET

我在这里做错了什么?

【问题讨论】:

    标签: java sql ms-access


    【解决方案1】:

    正确的语法是:

    SELECT SUM(TotalRate) AS ItemRateSum, TotalFeet
    FROM ItemRates
    GROUP BY TotalFeet;
    

    TotalFeet不是聚合函数的参数,所以它需要在GROUP BY中。

    【讨论】:

    • 解决了这个问题。一旦时间限制结束,将接受答案。感谢您的回复。
    【解决方案2】:

    所有被选中但不属于聚合函数的列必须包含在 group by 子句中

    【讨论】:

    • 从 ItemRates GROUPBY ItemName 中选择 SUM(TotalRate) 作为 ItemRateSum
    猜你喜欢
    • 2022-01-10
    • 2012-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-17
    • 2010-10-09
    • 1970-01-01
    相关资源
    最近更新 更多