当前位置: 首页 > 面试题库 >

子查询中不允许多级GROUP BY子句

陆宇航
2023-03-14
问题内容

我在MS Access中有如下查询

SELECT tblUsers.Forename, tblUsers.Surname, 
  (SELECT COUNT(ID) 
     FROM tblGrades 
     WHERE UserID = tblUsers.UserID 
     AND (Grade = 'A' OR Grade = 'B' OR Grade = 'C')) AS TotalGrades
FROM tblUsers

我已将其放入报告中,现在当尝试查看报告时,它会显示警报“ 子查询中不允许使用多级GROUP BY子句

我没有得到的是查询中什至没有任何GROUP BY子句,所以为什么返回此错误?


问题答案:

来自Allen
Browne出色的Access技巧网站:生存子查询

错误:“不允许多级分组”

您花了半个小时用子查询来构建查询,并验证它是否可以正常工作。您基于该查询创建一个报表,然后立即失败。为什么?

问题来自于Access在后台响应报表的“排序和分组”或聚合操作。如果它必须汇总报告的数据,那是不允许的“多级”分组。

解决方案

  • 在报表设计中,从“排序和分组”对话框中删除所有内容,并且不要尝试对“报表页眉”或“报表页脚”中的所有内容进行求和。(在大多数情况下,这不是实际的解决方案。)

  • 在查询设计中,取消选中子查询下的“显示”框。(仅当您不需要在报告中显示子查询的结果时,此解决方案才实用。)

  • 创建一个单独的查询来处理子查询。将此查询用作报表所基于查询的源“表”。有时(并非总是)将子查询移至较低级别的查询可以避免此问题,即使第二个查询很简单

SELECT * FROM Query1;

  • 使用域汇总函数(例如DSum())代替子查询。尽管这对于小型表来说很好,但是对于大型表而言,性能将无法使用。

  • 如果没有其他效果,请创建一个临时表来保存报告数据。您可以将查询转换为追加查询(在查询设计中追加到查询菜单上)以填充临时表,然后将报告基于临时表。

重要说明: 我在此重新发布信息,因为我相信Allen Browne明确允许它。从他的网站:

许可
您可以出于任何目的(个人,教育,商业,转售…)自由使用这些文章和示例数据库中的任何内容(代码,格式,算法等)。我们只要求您在代码中确认该网站,并加上以下注释:’来源: http
//allenbrowne.com
‘改编自: http :
//allenbrowne.com



 类似资料:
  • 问题内容: 是否有任何原因为什么或为什么不应该在子查询中执行“排序依据”? 问题答案: 是:不应这样做,因为从概念上讲这没有意义。 子查询将在某些外部查询中使用(否则它将毫无意义),并且该外部查询无论如何都必须进行排序,因此对子查询进行排序没有任何意义。 这是因为除非使用显式ORDER,否则SQL中的查询结果将没有特定的顺序。因此,即使您在子查询中使用了ORDER,也无法保证这会影响外部查询的结果

  • 问题内容: 我在PHP中运行一个脚本,该脚本uisng循环为MySQL创建了一个字符串查询。 执行脚本后,出现以下错误: “您的SQL语法有错误;请查看与您的MySQL服务器版本相对应的手册,以在’UPDATE BANNERS SET pos = 1 WHERE BID = 5; UPDATE BANNERS SET pos = 2 WHERE BID = 1’附近使用正确的语法。在第2行 在错误

  • 我为Select创建了动态DB2存储过程。我将使用这个泛型查询通过传递参数来执行多个select语句。 下面是我的查询的样子。 当我运行这个的时候

  • 问题内容: 我运行以下查询: 我收到以下错误: 消息512,级别16,状态1,行2子查询返回的值大于1。当子查询遵循=,!=,<,<=,>,> =或将子查询用作表达式时,这是不允许的。 有任何想法吗? 问题答案: 试试这个: 这将返回除列之外相同的多行。查看返回的不同成本值,并找出导致这些不同值的原因。然后询问某人他们想要哪个成本值,然后将条件添加到查询中以选择该成本。

  • 我去研究了关于JPA2.1规范的信息,这就是我发现的: 用于联接的联接条件来自映射的联接列。这意味着JPQL用户通常不必知道每个关系是如何连接的。在某些情况下,需要在连接条件中附加附加条件,通常是在外部连接的情况下。这可以通过ON子句来实现。ON子句在JPA2.1规范中定义,某些JPA提供程序可能支持ON子句。EclipseLink:Hibernate:TopLink-支持ON子句。 需要注意的是

  • 目前,我正在为客户列表开发一个“过滤器”功能。 我有以下子查询,我不确定是否有办法用CriteriaBuilder构建它。它也可以在没有multiselect但是我需要、和来选择最小值。结果应该是一个数字。 例如客户余额表 更新:这是我当前的代码,但是 如何为我的子查询添加排序依据 如何设置maxResult 谢谢!B