回答

收藏

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

技术问答 技术问答 205 人阅读 | 0 人回复 | 2023-09-13

我在MS Access查询如下
" Q5 [  N- g, L4 OSELECT tblUsers.Forename,tblUsers.Surname,  (SELECT COUNT(ID)      FROM tblGrades      WHERE UserID = tblUsers.UserID      AND (Grade = 'A' OR Grade = 'B' OR Grade = 'C')) AS TotalGradesFROM tblUsers我已经把它放在报告里了。现在,当我试图查看报告时,它会显示警报 多级查询中不允许使用子查询GROUP BY子句    ”3 Y( `# ^7 }' {
我没有得到的是查询中什么都没有GROUP BY那么,为什么要回到这个错误呢?
- d7 h8 s8 E8 A/ e* @2 d$ ]/ C: Y                                                                " \- p2 g$ `  `- g8 N8 Z
    解决方案:                                                               
$ O5 U+ b7 G! P4 P, `                                                                来自Allen" d( ^, O1 r. P- M9 G
Browne出色的Access技能网站:生存子查询  r* P# i2 N7 V7 m. o
错误:不允许多级分组构建查询需要半个小时的时间,并验证它是否能正常工作。您根据查询创建报告,然后立即失败。为什么?+ a: [" C+ m0 H/ `/ O$ l' \  r
问题来自于Access排序与分组或后台响应报表的聚合操作。若必须汇总报告数据,则为不允许的多级分组。( ]* ]: z- C( v  p
解决方案
% g& [! }9 C9 Q$ N0 R在报告设计中,从排序和分组对话框中删除所有内容,不要试图在报告页眉或报告页脚中找到所有内容。(在大多数情况下,这不是一个实际的解决方案。0 H1 J# w" \3 a: k) d
在查询设计中,取消选中子查询下的“显示”框。(仅当您不需要在报告中显示子查询的结果时,此解决方案才实用。)9 B  A+ A3 f" ~- o
创建一个单独的查询来处理子查询。将此查询用作基于报告查询的源表。有时(不总是)将子查询转移到较低级别的查询可以避免这个问题,即使第二个查询非常简单0 |9 t/ e& o/ Q0 R' y
SELECT * FROM Query1;
( D! g1 `& S7 t( p使用域汇总函数(例如)DSum()代替子查询。虽然这对小手表有好处,但对于大手表,性能将无法使用。
% R) }6 {$ [/ l如果没有其他效果,请创建一个临时表来保存报告数据。您可以将查询转换为额外的查询(添加到查询菜单中)以填写临时表,然后将报告基于临时表。3 M7 I8 c* \, @3 C% ]% K
重要说明:    我在这里重新发布信息,因为我相信Allen Browne明确允许。从他的网站:/ S# {. ?7 f: ~: S
许可出于任何目的(个人、教育、商业、转售)…)在这些文章和示例数据库中自由使用任何内容(代码、格式、算法等)。).我们只要求您在代码中确认网站,并添加以下注释:’来源:http//allenbrowne.com
0 d. H- f/ o/ h; G; C1 s‘改编自:http :6 H, b5 i9 y  [
//allenbrowne.com
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则