【发布时间】:2011-11-11 15:55:11
【问题描述】:
我是 BIRT 新手,需要回答以下问题: 如何在BIRT中比较一个数据集中的两个数据行,然后打印到文档中?
【问题讨论】:
-
你能给我们一些关于你为什么/以什么方式比较两个数据行的信息吗?
我是 BIRT 新手,需要回答以下问题: 如何在BIRT中比较一个数据集中的两个数据行,然后打印到文档中?
【问题讨论】:
我假设您有理由不使用自联接查询来引入数据。您可以做的一件简单的事情是拥有 2 个相同的数据集,然后使用 2 创建一个新的联合数据集。
【讨论】:
使用 Oracle 数据库,您可以使用“分析函数”LAG 使用纯 SQL 轻松实现此目的(有关详细信息,请参阅 Oracle 文档)。
独立于数据库,使用 BIRT,您可以使用变量 last_row:
创建一些计算列来保存比较结果。例如“FIRST_COLUMN_CHANGED”为布尔值。
afterOpen 事件:
last_row = null;
onFetch 事件(请注意我不确定实际数据列是从 0 还是 1 开始):
if (last_row != null) {
if (last_row[0] == row[0]) {
row["FIRST_COLUMN_CHANGED"] = false;
} else {
row["FIRST_COLUMN_CHANGED"] = true;
}
} else {
// do computations for the first record.
row["FIRST_COLUMN_CHANGED"] = true;
}
// Copy the current row to last_row
last_row = {};
// modify depending on the number of columns
for (var i=0; i<10; i++) {
last_row[i] = row[i];
}
【讨论】: