在Crystal Reports中,如何在不按分组排序的情况下使用聚合函数?
我正在尝试基于 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导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。