我有一段 T-SQL 代码看起来像这样:
select @automation_rate =
case
when @total_count = 0 then 0
else @automated_count / @total_count
end
@automation_rate 是十进制 (3,2)。@total_count 和 @automated_count 是整数。
不幸的是,@automation_rate 返回的唯一值是 0 或 1。显然这里有问题,它可能非常简单,但对于我的生活,我看不到它。
基础结果集中的所有数据(我正在遍历一个表)是 0 或正整数。除自动化率外,所有值都是整数。
这是示例值和预期(使用计算器)与实际结果:
automated count total count expected ratio actual ratio
--------------- ----------- -------------- ------------
0 35 0.0 0.00
98 258 37.98 0.00
74 557 13.29 0.00
140 140 1.00 1.00
正如你所看到的,我得到的所有值的比率都是 0.00,除了自动 = 总计。我还有一个 Excel 电子表格,它执行相同的基本计算,并且每次都完美(即就像“预期”列一样)。
那么我哪里做错了?
(这是在 MS SQL Server 2005 上,如果有任何影响的话)
编辑感谢大家的回答。我假设整数舍入部分是因为它正在移动到它会自动转换的十进制数据类型,而不是意识到它会进行计算,舍入然后转换。每个人都有相似的答案,所以到处都赞成。