Sql 如何设置聚合和()结果的位数?
在Oracle中,我试图获得销售总额,其类型为DECIMAL(5,2)。我还希望SUM'd列返回2位小数 查询如下所示:Sql 如何设置聚合和()结果的位数?,sql,oracle,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
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位
我尝试将总和转换为十进制(5,2)类型,但没有效果。任何帮助都将不胜感激。例如,使用
与9999d99
进行字符转换
这里的问题是最后一个数字是零。好吧,这似乎只是一个显示问题。如果你用5,2来计算,它就是5,2。重要的是以后如何显示它。仅仅因为你的工具没有显示最后的零,并不意味着它不在那里
to_char(sum(TOTAL*sellPrice), 'FM99999990D00')
FM删除前导空格。
9代表该位置的可选数字。
D表示十进制分隔符。
0表示该位置的必填数字
这确保所有数字至少有两个小数
.请不要发布制表符分隔的代码/etc-它确实与格式不符。很抱歉,我试图让表格从我这边看起来很漂亮。我会把它修好的。谢谢你的链接,我来看看。@danny london:我刚试过,运气不好!如果一切都失败的话,我会在早上试一试。没错,这只是困扰我的一件小事。我认为有一种方法可以按照我希望的方式显示我的数据。