Как заставить 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