Редактирование значений столбца в отчетах Oracle

У меня есть отчет оракула, который должен отображать набор значений, и он может быть создан как в формате pdf, так и в формате csv. Я должен был убедиться, что эти значения всегда показывают до 3 знаков после запятой. То есть:

0.1  --> 0.100
0.01 --> 0.010
0    --> 0.000

Excel не учитывает нули для обучения, поэтому я использовал следующий код, чтобы заставить Excel отображать все 3 десятичных знака:

select '="'||to_char(value,'90.999')||'"' from table1; 
--The column is declared as NUMBER(10,3) in the table

Теперь число отображается в Excel по желанию, но в формате PDF оно отображается как: =" 0,000"

Может ли кто-нибудь сказать мне, как сделать его согласованным в форматах pdf и csv?


person Haripriyan    schedule 10.08.2012    source источник
comment
Во-первых, просто для ясности: это отчет, который вы создаете в продукте Oracle Reports? Не оператор SQL, который используется для создания отчета из базы данных Oracle? Какую версию Oracle Reports вы используете? Каковы настройки распространения в отчете?   -  person Justin Cave    schedule 10.08.2012
comment
да! Я использую sql-запросы для получения данных из БД и использую макет бумаги для создания отчетов. И я использую построитель отчетов оракула 10.1.2   -  person Haripriyan    schedule 10.08.2012
comment
Не было бы проще установить маску формата поля в вашем отчете Oracle на '0.000', а затем, когда вы создадите отчет Excel, вручную установите формат столбца для отображения десятичных знаков? Или даже использовать специальную часть VBA, чтобы сделать это автоматически за вас.   -  person Ollie    schedule 10.08.2012
comment
да, но мне нужно было более общее решение, чем каждый раз менять форматирование столбцов в excel. Спасибо!   -  person Haripriyan    schedule 10.08.2012


Ответы (2)


Вы можете оценить параметр формата отчета во время выполнения и использовать оператор DECODE или оператор CASE, чтобы определить, какой выходной формат/значение для столбца.

Я думаю, что это позволит достичь того, к чему вы стремитесь, т.е. единый структурированный отчет с использованием одного и того же запроса для вывода в формате csv или pdf.

person OraNob    schedule 10.08.2012
comment
Спасибо. Меня беспокоит только проблема с производительностью. Если имеется около 5000 значений, то декодирование должно выполняться столько раз. Разве это не замедляет работу?? - person Haripriyan; 10.08.2012
comment
Я сомневаюсь, что это окажет значительное влияние на таблицу с 5000 строками. Это (относительно) очень небольшое количество строк. Лучше всего проверить, запустив запрос через план объяснения и сравнив до и после. - person OraNob; 13.08.2012

В моем проекте я пробовал ниже,

          IF :DESFORMAT='SPREADSHEET' THEN
                   :CP_2:= '="'||:cmdt_grp_cd||'"';
           ELSE
                   :CP_2:=:cmdt_grp_cd;
           END IF;
person MastanSky    schedule 21.08.2015