2011-04-02 36 views
2

在Oracle中,我試圖獲得DECIMAL(5,2)類型的銷售總和。我也希望SUM'd列返回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)類型,但無濟於事。任何和所有的幫助,將不勝感激。

+0

請不要發佈製表符分隔的代碼/等 - 它真的與格式化螺絲。 – 2011-04-02 05:16:36

+0

[Always always show decimal places in SQL?](http://stackoverflow.com/questions/799151/always-show-decimal-places-in-sql) – 2011-04-02 05:20:39

+0

對不起,我試圖讓桌子看起來不錯我的結局。我會解決這個問題。感謝您的鏈接,我會看看。 – ialm 2011-04-02 05:24:12

回答

1
to_char(sum(TOTAL*sellPrice), 'FM99999990D00') 

FM刪除前導空白。 9代表該位置的可選號碼。 D代表小數點分隔符。 0代表該位置的強制性數字。

這確保所有數字都至少有兩位小數。

Read more about Oracle format models

+0

謝謝,這個問題解決了我的問題。 – ialm 2011-04-04 05:12:05

2

使用TO_CHARformat specifier99999D99例如?

這裏你的問題是最後一位數字是零。

+0

如果一切都失敗了,我會在早上給它一個鏡頭。 – ialm 2011-04-02 07:19:38

1

好吧,這似乎只是一個顯示問題。如果你遇到5,2,它將是5,2。重要的是你以後如何顯示它。僅僅因爲你的工具沒有顯示最後的零點,並不意味着它不在那裏。

+0

沒錯,它只是那些令我感到不安的小事情之一。我認爲有一種方法可以按照我希望的方式顯示數據。 – ialm 2011-04-02 07:21:02

+0

它讓我感到無法接受! – 2011-04-04 21:57:03