Как мне установить количество цифр из результатов совокупного SUM ()? - PullRequest
2 голосов
/ 02 апреля 2011

В Oracle я пытаюсь получить сумму продаж типа DECIMAL (5,2).Я также хочу, чтобы столбец SUM возвращался с двумя десятичными знаками.

Запрос выглядит следующим образом:

SELECT I.upc, category, sellPrice, total, sum(TOTAL*sellPrice)"TOTALVALUE"
...
GROUP BY GROUPING SETS ( (I.upc, category, sellPrice, TOTAL), (category), ());

Пример таблицы, которую я получаю из запроса:

UPC   CATEGORY  SELLPRICE TOTAL TOTALVALUE
--- ----------  --------- ----- ----------
  0    Fantasy      20.99     2      41.98
  1    Fantasy      30.99     5     154.95
       Fantasy                      196.93
  2  Classical      10.99     3      32.97
     Classical                       32.97
                                     229.9

Обратите внимание, что последнее значение в правом нижнем углу, общий итог, установлен с 1 десятичным знаком.

Я попытался привести сумму к типу DECIMAL (5,2), но безрезультатно.Любая помощь будет принята с благодарностью.

Ответы [ 3 ]

2 голосов
/ 02 апреля 2011

Использовать TO_CHAR с спецификатором формата 99999D99, например?

Ваша проблема в том, что последней цифрой будет ноль.

1 голос
/ 03 апреля 2011
to_char(sum(TOTAL*sellPrice), 'FM99999990D00')

FM удаляет начальные пробелы.9 представляют необязательный номер в этой позиции.D представляет десятичный разделитель.0 представляют обязательные числа в этой позиции.

Это гарантирует, что все числа имеют как минимум два десятичных знака.

Подробнее о моделях формата Oracle .

1 голос
/ 02 апреля 2011

Ну, это, кажется, просто вопрос отображения. Если у вас дело до 5,2, это будет 5,2. Важно то, как вы отобразите это позже. То, что ваш инструмент не показывает последний ноль, не означает, что его там нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...