如何设置聚合SUM()结果的位数?

时间:2011-04-02 05:13:13

标签: sql oracle

在Oracle中,我试图获得销售总额,其类型为DECIMAL(5,2)。我还希望SUM'd列以2位小数返回。

查询如下所示:

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 个答案:

答案 0 :(得分:2)

例如,将TO_CHARformat specifier 99999D99一起使用?

你的问题是最后一位数字是零。

答案 1 :(得分:1)

嗯,这似乎只是一个显示问题。如果你的情况是5,2,它将是5,2。重要的是你以后如何展示它。仅仅因为你的工具没有显示最后的零,并不意味着它不存在。

答案 2 :(得分:1)

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

FM删除了前导空格。 9代表该位置的可选数字。 D代表小数分隔符。 0代表该职位的强制性数字。

这可确保所有数字至少有两位小数。

Read more about Oracle format models