在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)类型,但无济于事。任何和所有的帮助将不胜感激。
答案 0 :(得分:2)
例如,将TO_CHAR
与format specifier 99999D99
一起使用?
你的问题是最后一位数字是零。
答案 1 :(得分:1)
嗯,这似乎只是一个显示问题。如果你的情况是5,2,它将是5,2。重要的是你以后如何展示它。仅仅因为你的工具没有显示最后的零,并不意味着它不存在。
答案 2 :(得分:1)
to_char(sum(TOTAL*sellPrice), 'FM99999990D00')
FM删除了前导空格。 9代表该位置的可选数字。 D代表小数分隔符。 0代表该职位的强制性数字。
这可确保所有数字至少有两位小数。