根据BIRT

时间:2016-04-13 14:19:02

标签: birt

我正在创建BIRT报告,其中每一行都是与采购订单匹配的收据。每个采购订单通常有多个收据。我的客户希望采购订单上的qty_remaining仅显示每个采购订单的最后一个收据。我无法在BIRT获取数据之前更改数据。我看到两种可能的解决方案,但我无法找到如何实现。这个问题将涉及第一个可能的解决方案。

如果我可以将采购订单编号(po_number)与下一行进行比较,那么如果po_numbers匹配,我可以将当​​前行的qty_remaining设置为0,否则显示实际的qty_remaining。是否可以访问下一行?

修改

期望的外观与此相似:

| date | receipt_number | po_number | qty_remaining | qty_received | |------|----------------|-----------|---------------|--------------| | 4/9 | 723 | 6026 | 0 | 985 | | 4/9 | 758 | 6026 | 2 | 1 | | 4/20 | 790 | 7070 | 58 | 0 | | 4/21 | 801 | 833 | 600 | 0 |

但我现在正在接受这个:

| date | receipt_number | po_number | qty_remaining | qty_received | |------|----------------|-----------|---------------|--------------| | 4/9 | 723 | 6026 | 2 | 985 | | 4/9 | 758 | 6026 | 2 | 1 | | 4/20 | 790 | 7070 | 58 | 0 | | 4/21 | 801 | 833 | 600 | 0 |

1 个答案:

答案 0 :(得分:0)

我认为你以错误的方式看待这个问题。如果您想要类似for循环的行为,则应使用分组和聚合函数。您可以使用(或不使用)组页眉和页脚来构建非常复杂的东西。

在你的情况下,我会尝试将收据分组到po_number上。通过receipt_number对它们进行排序,然后在receiptts_number上设置MAX或LAST等聚合函数,并将其命名为last_receipt'。它应聚合在组上,而不是整个表。这个'总计'在组中的每一行都可用。 然后,您可以使用visibitly设置仅在行[' receipt_number'] == row [' last_receipt']

时显示qty_remaining