gpt4 book ai didi

sql - 子查询中不允许使用多级 GROUP BY 子句

转载 作者:行者123 更新时间:2023-12-04 22:23:37 24 4
gpt4 key购买 nike

我在 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 技巧网站:Surviving Subqueries

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

你花了半个小时用子查询构建一个查询,并验证它一切正常。您根据查询创建了一个报告,但它立即失败了。为什么?

问题源于 Access 在后台对报表的排序和分组或聚合所做的响应。如果它必须聚合报告的数据,那么这是不允许的“多级”分组。

解决方案

  • 在报表设计中,从排序和分组对话框中删除所有内容,不要尝试在报表页眉或报表页脚中汇总任何内容。 (在大多数情况下,这不是一个实用的解决方案。)
  • 在查询设计中,取消选中子查询下的 Show 框。 (此方案仅适用于不需要在报表中显示子查询结果的情况。)
  • 创建一个单独的查询来处理子查询。将此查询用作报告所基于的查询的源“表”。有时(并非总是)将子查询移动到较低级别的查询可以避免该问题,即使第二个查询很简单

    SELECT * FROM Query1;
  • 使用域聚合函数(例如 DSum())而不是子查询。虽然这对于小表来说很好,但对于大表来说性能将无法使用。
  • 如果没有其他效果,请创建一个临时表来保存报告的数据。您可以将您的查询转换为附加查询(查询设计中的附加查询菜单)以填充临时表,然后基于临时表生成报告。

  • 重要提示:我在这里重新发布信息是因为我相信艾伦布朗明确允许它。从他的网站:

    Permission You may freely use anything (code, forms, algorithms, ...) from these articles and sample databases for any purpose (personal, educational, commercial, resale, ...). All we ask is that you acknowledge this website in your code, with comments such as: 'Source: http://allenbrowne.com 'Adapted from: http://allenbrowne.com

    关于sql - 子查询中不允许使用多级 GROUP BY 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10284438/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com