Форматирование числового поля в валюте с использованием TO_CHAR, возвращающего ha sh символов - PullRequest
0 голосов
/ 29 апреля 2020

Я использую простую сумму и пересчет в валюту в поле NUMBER в базе данных Oracle.

Мой запрос:

select 
TO_CHAR(eve.data_entry_date, 'yyyy-mm'), wtc.description as WORK_TYPE,
TO_CHAR(sum(sev.amount),'$999,999.99') AS "Total Invoice Amount"

from
EVENT eve,
SOW_EVENT sev,
WORK_TYPE_CODE wtc, 
SOW_WORK_TYPE_XREF swt,
WORK_TYPE_ITEM_CODE wti

where 
eve.event_number_id = sev.event_number_id
and sev.WORK_TYPE_CODE = WORK_TYPE_CODE
and sev.event_number_id = swt.event_number_id

group by 
TO_CHAR(eve.data_entry_date, 'yyyy-mm'), wtc.description

Запрос выполняется успешно, однако суммы, отображаемые в столбце «Общая сумма счета», возвращают хэши, например:

Year-Month   WORK_TYPE         Total Invoice AMount
2019-01      Physical Work     ############
2019-01      Technical Work    ############

Я думал, что мне просто нужно изменить размер столбца, но это не сработало. Когда я просто запускаю:

sum(sev.amount)

, он заполняет суммы, только не отформатированные как валюта, поскольку столбец «сумма» является столбцом чисел. Есть идеи, почему я получаю хэши при форматировании в валюту?

1 Ответ

1 голос
/ 30 апреля 2020

Из документации :

Во всех моделях числового формата число округляется до указанного количества значащих цифр. Если значение имеет больше значащих цифр слева от десятичного знака, чем указано в формате, то знаки решетки (#) заменяют значение. Это событие обычно возникает, когда вы используете TO_CHAR с ограничительной строкой числового формата, вызывая операцию округления.

Для вашей маски формата необходимо достаточно заполнителей di git для наибольшего ожидаемого значения , На данный момент значения выше миллиона.

...