Вопрос:
Я пытаюсь найти правильную маску формата Oracle для отображения чисел на странице Apex в отчете определенным образом. В большинстве случаев эти числа являются целыми числами, но иногда эти числа могут быть числами с плавающей запятой. Скажем, у меня есть три следующих запроса:
Запрос 1
SELECT TO_CHAR(1, ‘<Format Mask>’, ‘NLS_NUMERIC_CHARACTERS = »,.»’) FROM DUAL;
Запрос 2
SELECT TO_CHAR(0.1, ‘<Format Mask>’, ‘NLS_NUMERIC_CHARACTERS = »,.»’) FROM DUAL;
Запрос 3
SELECT TO_CHAR(0.01, ‘<Format Mask>’, ‘NLS_NUMERIC_CHARACTERS = »,.»’) FROM DUAL;
Теперь я хочу использовать одну маску формата, которая даст мне следующие результаты:
Результат 1
1
Результат 2
0,1
Результат 3
0,01
Может ли кто-нибудь предоставить мне правильную маску формата для этого? Я пробовал маску формата, например, FM990D999, но это оставляет меня с запятой, заканчивающей 1 в Query 1.
Лучший ответ:
Существуют способы изменить значение столбца в запросе, сохраняя при этом (некоторые) функциональные возможности в отчетах. Однако, имея несколько таких столбцов и несколько отчетов, вы можете найти много накладных расходов для небольшого выигрыша.
Посмотрите этот пост на форумах OTN: порядок по дате в IR
Проблема почти такая: данные в столбце представляют дату, но на самом деле не дату. Это сообщение содержит решение для использования в вершине <4.2.
Начиная с 4.2 и выше у вас есть лучший вариант, называемый выражением HTML.
Опять же, связанный с OTN: Re: Отформатирование/сортировка отчета
Цитируется из связанного сообщения, пользователь fac586
Включите в запрос как дисперсию, так и абс (дисперсию):
SELECT region, estimate, actual, (estimate — actual) AS variance, ABS(estimate — actual) AS abs_variance, (CASE WHEN (estimate — actual)>=0 THEN ‘green’ WHEN (estimate — actual)<0 THEN ‘red’ ELSE NULL END) AS variance_color from expenses
И выражение HTML для столбца “дисперсия”:
<span style=»color: #VARIANCE_COLOR#; font-weight: bold;»>#ABS_VARIANCE#</span>
Скройте #VARIANCE_COLOR# и #ABS_VARIANCE#.
#ABS_VARIANCE# – значение, указанное в столбце, но сортировка выполняется в базовом SQL с использованием исходного значения дисперсии.
Это очень похоже на предложение Алекса, но это немного больше работы: форматирование в источнике, добавление выражения html, скрытие другого столбца.
Я полагаю, это зависит от того, насколько вы хотите его водить. Почему бы просто не применить формат к столбцу через его атрибуты?
Также имейте в виду, что в этих полях можно использовать синтаксис подстановки строк. У вас может быть несколько элементов приложения, содержащих маски формата, а затем ссылку на правильную маску в поле маски формата. Например: элемент приложения AI_FORMAT_MASK1 имеет значение FM9990D00.
В поле маски формата вы можете использовать &AI_FORMAT_MASK1.