根据 BIRT 中的下一行计算值
Compute value based on next row in BIRT
我正在创建一个 BIRT 报告,其中每一行都是与采购订单匹配的收据。每个采购订单通常有不止一张收据。我的客户希望采购订单上的 qty_remaining 仅显示在每个采购订单的最后一张收据上。我无法在 BIRT 获取数据之前更改数据。我看到了两种可能的解决方案,但我无法找到实现方法。这个问题将涉及第一个可能的解决方案。
如果我可以将采购订单编号 (po_number) 与下一行进行比较,那么我可以将当前行的 qty_remaining 设置为 0 如果 po_number 匹配 else show实际 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 |
我认为你看错了。如果您想要类似于 for 循环的行为,您应该使用分组和聚合函数。您可以通过使用(或不使用)组页眉和页脚来构建非常复杂的内容。
在你的情况下,我会尝试将收据分组到 po_number。按 receipt_number 排序,然后在 receipts_number 上有一个像 MAX 或 LAST 这样的聚合函数,并将其命名为 'last_receipt'。它应该聚集在组上,而不是整个 table。此 'total' 可用于组内的每一行。
然后,您可以使用 visibitly 设置仅在 row['receipt_number'] == row['last_receipt']
时显示 qty_remaining
我正在创建一个 BIRT 报告,其中每一行都是与采购订单匹配的收据。每个采购订单通常有不止一张收据。我的客户希望采购订单上的 qty_remaining 仅显示在每个采购订单的最后一张收据上。我无法在 BIRT 获取数据之前更改数据。我看到了两种可能的解决方案,但我无法找到实现方法。这个问题将涉及第一个可能的解决方案。
如果我可以将采购订单编号 (po_number) 与下一行进行比较,那么我可以将当前行的 qty_remaining 设置为 0 如果 po_number 匹配 else show实际 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 |
我认为你看错了。如果您想要类似于 for 循环的行为,您应该使用分组和聚合函数。您可以通过使用(或不使用)组页眉和页脚来构建非常复杂的内容。
在你的情况下,我会尝试将收据分组到 po_number。按 receipt_number 排序,然后在 receipts_number 上有一个像 MAX 或 LAST 这样的聚合函数,并将其命名为 'last_receipt'。它应该聚集在组上,而不是整个 table。此 'total' 可用于组内的每一行。 然后,您可以使用 visibitly 设置仅在 row['receipt_number'] == row['last_receipt']
时显示 qty_remaining