【问题标题】:rounding down in TSQL 2005在 TSQL 2005 中四舍五入
【发布时间】:2014-08-06 16:10:02
【问题描述】:

有没有一种简单的方法可以将下面的 Excel 公式转换为 TSQL:

ROUNDDOWN((table.OrderQty / table.PacksPerCase),0) 
  • table.OrderQty = 9
  • table.PacksPerCase = 5

“0”表示结果将有零位小数

结果 = 1.0

  • table.OrderQty = 9
  • table.PacksPerCase = 4

“0”表示结果将有零位小数

结果 = 2.0

【问题讨论】:

    标签: tsql sql-server-2005 decimal rounding


    【解决方案1】:

    尝试使用 FLOOR :

    FLOOR 函数返回小于或等于的最大整数 指定的数值表达式。

    你的表达应该是:

    FLOOR(table.OrderQty / table.PacksPerCase) 
    

    【讨论】:

    • 那也是东边。谢谢!
    • 哦,还有一个问题:为什么选择 9/5 = 1 而应该是 1.8
    • @user2984486 由于两个数字都是整数,SQL Server 使用整数除法。如果您使用(例如)SELECT 9.0/5 表示您想要浮点除法,您将得到 1.8。
    【解决方案2】:

    ROUNDDOWN() 向零舍入负数。

    由于FLOOR 向负无穷大舍入,因此我能想到的 TSQL 中最接近的等价物是 ROUNDfunction 设置为 1;

    ROUND((table.OrderQty / table.PacksPerCase), 0, 1) 
    

    如果您只处理正数,当然 FLOOR 也可以。

    【讨论】:

      猜你喜欢
      • 2012-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-12
      • 1970-01-01
      • 2012-08-04
      相关资源
      最近更新 更多