Как сравнить две строки данных в одном наборе данных в BIRT - PullRequest
1 голос
/ 11 ноября 2011

Я новичок в BIRT и мне нужен ответ на следующий вопрос: Как сравнить две строки данных в одном наборе данных в BIRT, а затем распечатать его в документе?

Ответы [ 2 ]

1 голос
/ 27 января 2012

Я предполагаю, что у вас есть причина, по которой вы не используете запрос самостоятельного объединения для ввода данных. Одна простая вещь, которую вы можете сделать, это иметь 2 одинаковых набора данных, а затем создать новый объединенный набор данных, используя 2.

0 голосов
/ 25 февраля 2014

С базой данных Oracle вы можете легко добиться этого с помощью чистого SQL, используя «Аналитическую функцию» LAG (подробности см. В документации 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];
}
...