Как заставить BIRT отображать нулевые значения?

У меня есть ситуация в отчетности BIRT. Созданный мной отчет настаивает на том, чтобы некоторые поля отображались пустыми, а не нулевыми. Ситуация возникает, когда поле на самом деле является подвыбором, который не возвращает строк.

Так, например, если выбор включает в себя:

0 as p3,

тогда 0 отображается нормально. Однако, если выбор имеет:

(select sum(other_field) from other_table where ...) as p3,

поле отображается пустым.

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

Поэтому я думаю, что BIRT каким-то образом обрабатывает вложенный выбор, возвращающий нулевые строки как NULL (который он также отображает как пустую ячейку), а не ноль. У кого-нибудь есть идеи, как заставить BIRT отображать фактический 0, а не пустую ячейку?

Я использую DB2/z v8, если кому-то нужно опубликовать ответ, специфичный для СУБД, хотя даже предложения от других поставщиков приветствуются.

2 ответа

Решение

Попробуйте использовать функцию COALESCE для принудительной установки значения, когда столбец или выражение может возвращать NULL.

COALESCE ((выберите сумму (other_field) из other_table где...), 0) как p3,

Другой способ, хотя и не такой элегантный, но иногда необходимый (например, если вы выполняете хранимую процедуру, которую вы не можете изменить), заключался бы в использовании JavaScript для принудительного отображения "0" во время выполнения.

Используйте следующее выражение для привязки данных:

if (dataSetRow["your_data_set"] == null)
{
    0
}
else
{
    dataSetRow["your_data_set"]
}

В зависимости от типа данных вам может понадобиться добавить кавычки в ноль

"0"

для представления строк без кавычек это рассматривается как целое число.

При использовании десятичных данных я смог быстро добавить +0 к полю в сокращенной версии.

dataSetRow["your_data_set"]+0
Другие вопросы по тегам