2014-09-26 3 views
3

Я пытаюсь выяснить, как получить мои результаты, чтобы показать только два десятичных знака и валюту, если можно. Сейчас я получаю это:Преобразование десятичного числа в валюту в SQL (Oracle)

PARTID  PARTIDCOUNT AVGPLANAMT 
1001   27   17.02148148148148148148148148 
1002   13   54.18615384615384615384615384 
1003    3   467.4166666666666666666666666 
1009    5   862.27 

SELECT DISTINCT 
D.PARTID, 
COUNT(D.PARTID) AS PARTIDCOUNT, 
AVG(D.PLANAMOUNT) AS AVGPLANAMT 
FROM PARTS.... 
+1

У вас есть требование округлить или усечь? –

ответ

3

Как насчет следующего (SQL Fiddle):

SELECT PARTID, COUNT(*) AS PARTIDCOUNT, 
     TO_CHAR(AVG(PLANAMOUNT), 'L999,999,999.00') AS AVGPLANAMT 
FROM PARTS 
GROUP BY PARTID 

Для второго параметра я использую 'L999,999,999.00', который будет приходиться на любое количество до 1 млрд. Если вам нужно разместить большее число, сделайте что-то вроде: 'L999,999,999,999,999.00'.

+1

Для символа локализованной валюты вы можете использовать 'L' вместо' $ '. –

+0

** @ Sylvain Leroux **, хороший звонок, я обновил свой ответ. – Linger

+0

Удивительно, спасибо! – tia97

1

Чтобы показать только два знака после запятой можно использовать бонусную

ROUND(AVG(D.PLANAMOUNT), 2) AS AVGPLANAMT 

Более подробную информацию о ROUND() можно найти here.

Что вы подразумеваете под and currency? Вам просто нужен символ валюты впереди $?

Если это так, попробуйте это.

COLUMN AVGPLANAMT FORMAT $990.99 

Для получения дополнительной информации вы можете посмотреть here.

+0

Большое вам спасибо! – tia97

Смежные вопросы