【问题标题】:Microsoft Access 2013 GROUP BY Syntax ErrorMicrosoft Access 2013 GROUP BY 语法错误
【发布时间】:2015-07-20 18:19:21
【问题描述】:

我正在使用 Microsoft Access 2013,我正在尝试将存储在我的 Part 表中的数据按存储在其中的类进行分组。我已经创建了这个查询:

SELECT Part.PartNum, Part.Description, Part.OnHand, Part.Class, Part.Warehouse, Part.Price
FROM Part
GROUP BY Part.Class
ORDER BY Part.PartNum;

上面的 SQL 代码在 Microsoft Access 中出现错误:“您的查询不包括指定的表达式 'PartNum' 作为聚合函数的一部分”。我不确定我做错了什么......我应该为分组创建一个额外的列吗?

这是我的零件表的样子

【问题讨论】:

  • 您应该阅读有关分组及其含义的信息。您不能只按列分组并选择其他列。你需要聚合它们
  • 拖动选择中的所有字段以成为您的组的一部分...这将起作用。现在你想要平均零件价格还是最低价格?最大限度?删除它并添加 min/max/avg... 为每个字段重复。你确定你不想order by part.class, part.partnum吗? (首先按类别,然后按零件编号)
  • 我认为您根本不想在查询中进行分组,因为没有聚合函数(Count、SUM、Min、Max...)。该报告将对您进行分组、排序并创建您的总计。
  • 你想做什么?为什么要GROUP BYpart.class?您如何预期 DB 将 GROUP BY part.class 并以某种方式在同一结果集中向您显示 part.partnum

标签: sql ms-access group-by


【解决方案1】:

我认为您不了解分组的目的。 当您对某些内容进行分组时,您只能在 select 语句中使用分组和聚合的列。 例如,正确的查询可能如下:

SELECT Part.PartNum, SUM(Part.Price)
FROM Part
GROUP BY Part.Class, Part.Description, Part.OnHand, Part.Class, Part.Warehouse
ORDER BY Part.PartNum;

但是,我在您的选择中没有任何聚合函数。清楚地描述你的任务。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多