在Crystal Reports中,如何在不按分组排序的情况下使用聚合函数?

编程语言 2026-07-09

我正在尝试基于 field 1 使用诸如SUM和 COUNT之类的函数,但仅按 field 2 进行排序。

举个例子,我将把基于 Order Num 的字段作为求和对象,将按 Ref Num 进行排序,以及每个订单的求和字段为 Qty

输入:

订单编号 参考编号 数量
A 1 1
A 3 1
B 2 3
C 4 1
C 0 4

期望输出:

订单编号 参考编号 数量 总数量
C 0 4 5
A 1 1 2
B 2 3 3
A 3 1 2
C 4 1 5

如果我按 Order Num 分组,它会把所有相同的 Order Num 值放在一起(即使我取消勾选“保持在一起”)。如果我不按 Order Num 分组,我就无法得到基于 Total Qty 的结果。

我所能做到的最接近的是在每个 Order Num 组内按最小的 Ref Num 进行排序。

最接近的输出:

订单编号 参考编号 数量 总数量
C 0 4 5
C 4 1 5
A 1 1 2
A 3 1 2
B 2 3 3

这用于每天打印数百个标签,随后必须手动按 Ref Num 排序。

我不能改变需求nor数据库。唯一可以修改的只是报表。

谢谢。

解决方案

这可以通过子报表实现。无需对主报表分组,只需按 Ref Num 排序,在明细部分将三个数据字段排成列。然后在同一明细部分的右侧位置添加一个子报表,使其形成右侧的一列。使用相同的数据源创建子报表,按 Order Num 分组并对 Qty 进行求和。在子报表中隐藏除分组页脚(显示求和后的数量)以外的所有部分。回到主报表设计页,右键单击子报表并更改子报表链接,将主报表上的 Order Num 链接到子报表上的 Order Num

此处输入图片描述

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章