首页 > 解决方案 > SQL- 将 Sum int 转换为 Decimal

问题描述

我一直在尝试将这个总和更改为小数。该计算为要在员工工作时间内完成的特定任务数量设定了目标。结果就是问题,因为它继续以 int 形式给出结果。

((sum(IsNull([Employee Hours],0))/NullIf([ProcessTime],0))as decimal(6,2)) as [Planned Tasks],

我已经尝试过 CAST 和 CONVERT,但似乎没有任何效果,结果仍然显示为 int。

这是我尝试的最后一个脚本:

Cast((sum(IsNull([Employee Hours],0))/NullIf([ProcessTime],0))as decimal(6,2)) as [Planned Tasks],

非常感谢任何帮助。

标签: sql-servercastingintdecimal

解决方案


我猜问题不是数据类型而是结果。您的代码看起来像 SQL Server,并且 SQL Server进行整数除法,所以1/20,不是0.5. 要获得小数,请转换为非整数 - 我倾向于通过乘以来做到这一点1.0

Cast(sum(coalesce([Employee Hours], 0) * 1.0 /
     NullIf([ProcessTime], 0) as decimal(6, 2)
    ) as [Planned Tasks],

推荐阅读