【问题标题】:Insert decimalplaces into number and the round the sum将小数位插入数字并将总和四舍五入
【发布时间】:2015-11-22 13:23:33
【问题描述】:

我是 Oracle 新手,来自 MS SQL Server 环境。

如何格式化 number(10) 类型的列,以便在最后两位数字之前插入逗号,对格式化的值求和,然后对总和进行四舍五入?

金额列值

400 (format to 4,00)
4000 (format to 40,00)
40000 (format to 400,00)
400000 (format to 4000,00)
639 (format to 6,39)

在这种情况下,格式化数字的总和为:4445,39

四舍五入将返回:4445。

我尝试过的查询:

select TO_CHAR((ROUND(SUM(Amount))),'FM9999999G90')
select TO_NUMBER(ROUND((TO_CHAR(SUM(Amount),'FM9999999G90'))), '9999999.99')

结果:4450.39,但我希望在这种情况下将其四舍五入为 4450。

Fiddle

【问题讨论】:

    标签: sql oracle oracle11g


    【解决方案1】:

    你只需要将数字除以100,然后ROUND

     ROUND(SUM(amount)/100)
    

    查看此 SQL Fiddle 以获取工作演示:

    【讨论】:

    • 感谢您的意见,但这不是四舍五入。 :( 即 4450.80 它应该是 4451。
    • @Henrik 业务规则是什么?理想情况下,输入的总和(数量)应为445039。如果值为123456 怎么办?那么,规则是什么?
    • 规则是数量是数字(10)类型,这是产品的价格,即。但在分贝中没有小数。因此我需要在最后 2 个数字之前添加一个小数。 IE。 639 应转换为格式 6,39。在转换所有列值之后,我想对所有值求和,然后对总和进行四舍五入。总和应始终采用两位小数的格式,即。 1234,56 然后四舍五入到 1235。
    • @Henrik 好的,请参阅更新的答案。请将其标记为已回答,也会对其他人有所帮助!
    • 啊,谢谢。我认为数字类型就像整数,因此需要先将其格式化为字符串。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 2020-06-12
    相关资源
    最近更新 更多