sql - SQL 操作顺序对简单的数学计算没有意义
问题描述
我在存储过程中有一个简单的计算要做。根据我放置变量的顺序,我得到不同的结果
如果您将其复制/粘贴到 SQL 查询分析器中,您可以轻松地重现我得到不同结果的问题。我正在寻找的结果是第二次计算(57364.32)
DECLARE @mnyDocTotal MONEY;
DECLARE @mnyUSDTotal MONEY
DECLARE @mnyDetailLine MONEY
SET @mnyDocTotal = 78000
SET @mnyUSDTotal = 86046.48
SET @mnyDetailLine = 52000
PRINT 'Result: ' + CAST(ROUND(@mnyDetailLine / @mnyDocTotal * @mnyUSDTotal,2) as char(20))
PRINT 'Result: ' + CAST(ROUND(@mnyDetailLine * @mnyUSDTotal / @mnyDocTotal,2) as char(20))
--Result: 57358.58
--Result: 57364.32
我相信 / 和 * 在同一级别上,在这种情况下从左到右操作。
如果你用计算器计算数字,你总是会得到 57364.32。
这让我花了大约 2 个小时的时间来解决这个问题。在我所有的岁月里,我从来没有遇到过这个问题。为什么结果不一样?
解决方案
推荐阅读
- html - 选择“否”单选按钮时打开的文本框,必须重新使用才能继续
- python - python,在字典中使用try/except来避免错误
- azure - 无法在 Azure 中的 docker compose yml 中使用卷
- laravel - 将 laravel 分页对象和列表项分离到单独的变量
- php - 尝试对具有匹配日期的 mysql 事件进行分组
- django - 重新保存记录时,django admin 'Form' 没有名为 'field_name' 的字段
- java - 像在labview中一样在java中重新/im到polar
- javascript - 我应该使用 connect 还是 hooks 来响应 redux 并且哪个具有更好的性能?
- .net - .Net SignalR 2.0 长轮询易受 Web 应用程序防火墙攻击
- sql - 在plpgsql中将参数传递给SQL函数