访问报告:如何在一个字段上分组,但按另一个字段排序



我读过类似的问题,它们似乎不太适合我的问题,或者它们处于不同的环境中。

我在MS Access 2016工作。

我有一个客户投诉报告,其中有字段:年、月、计数([communication#](、投诉_描述。(投诉#是我们为表格中输入的每个投诉分配的文字ID号(

我按年度和月份对报告进行了分组,然后按投诉_描述进行分组,对每个描述都进行了投诉编号计数,然后进行了投诉#计数,将当月的投诉总数相加,并将其粘贴在月页脚中,结果如下:

2020  03 <= (this is the month group header)
complaint desc | count of complaints/desc    
---------------------------------------------    
electrical     | 2                               {This section is 
cosmetic       | 6                               {in the Complaint_desc
mechanical     | 1                               {group footer
---------------------------------------------
9 <= (this is month group footer)

每个月重复该组

这一切都很好。我想做的是按照计数(投诉#(的降序对投诉描述组中的记录进行排序,使其看起来像:

2020  03 
complaint desc | count of complaints/category    
---------------------------------------------    
cosmetic       | 6
electrical     | 2                             
mechanical     | 1
---------------------------------------------                              
9

然而,我所做的似乎都不起作用,desc组的内置排序"a on top"覆盖了查询中的排序。按投诉#添加排序也被忽略。我试图添加一个按计数排序(投诉#(,访问告诉我,我不能在排序依据中有聚合函数(但我认为它无论如何都会被覆盖(。我还尝试了按计数分组(complaint#(,也将其作为一个分组中的聚合。尝试将complaint_dsc和count(complaint#(移动到complaint#group标题,它搞砸了月页脚中的总计数,还拆分了complaint desc,破坏了它的初衷。。。

我真的不认为这个改变会有什么大不了的,但一个解决方案已经回避了我一段时间。我读过类似的问题,并试图举例说明,但它们并没有达到我想要的结果。

有什么想法吗?

我想通了!感谢@UnhandledException,他让我走上了正轨。

以下是我所做的:报告所基于的原始查询包含以下内容:

Design mode:
Field | Year      | Month     | Complaint_Desc | Complaint# |
Total | Group By  | Group By  | Group By       | Group By   |
Sort  |           |           |                |            |
or in SQL: 
SELECT Year, Month, [tbl Failure Mode].[Code description], [Complaint Data Table].[Complaint #] 
FROM [tbl Failure Mode] RIGHT JOIN [Complaint Data Table] ON [tbl Failure Mode].[ID code] = [Complaint Data Table].[Failure Mode]
GROUP BY Year, Month, [tbl Failure Mode].[Code description], [Complaint Data Table].[Complaint #];

然后我使用了报告的分组和排序函数,使其显示出我想要的内容,除了我提到的打嗝。

我根据这个查询做了另一个查询:

Design mode:
Field | Year       | Month      | Complaint_Desc | Complaint# |
Total | Group By   | Group By   | Group By       | Count      |
Sort  | Descending | Descending |                | Descending |
or in SQL: 
SELECT [qry FailureMode].Year, [qry FailureMode].Month, [qry FailureMode].[Complaint_description], Count([qry FailureMode].[Complaint #]) AS [CountOfComplaint #], [qry FailureMode].Complaint
FROM [qry FailureMode]
GROUP BY [qry FailureMode].Year, [qry FailureMode].Month, [qry FailureMode].[Code description], [qry FailureMode].Complaint
ORDER BY [qry FailureMode].Year DESC , [qry FailureMode].Month DESC , Count([qry FailureMode].[Complaint #]) DESC;

然后我改变了报告结构:

我删除了Complaint_Desc组,将Complaint_Desc和CountofComplaint#(它现在不是一个函数,但它是我新查询中自己计算的字段(移到了报告的DETAIL部分。然后,我删除了月份页脚中的第二个计数(投诉#(,作为每个月的总数,并将其替换为"AccessTotalsCountOfComplaint#",即=Sum([CountOfComplait#](,我可以通过右键单击CountOfComplaint_Desc中的详细信息滚动到"total"并单击"Sum"来自动创建该计数。(我删除了我需要的月份组页脚之外的额外AccessTotalsCountOfComplaint#…(

Et Voila

我希望这能帮助其他人,再次感谢为我指明正确方向的Unhandled Exception。

最新更新