【发布时间】:2012-07-20 04:35:29
【问题描述】:
我正在从全局临时表执行更新,如下所示:
update some_table
set Amount = (##GlobalTable.InitialAmount) + (##GlobalTable.[Difference])
from ##GlobalTable
where Amount = ##GlobalTable.InitialAmount
Amount、InitialAmount 和 Difference 列都是 numeric(21,2)
Amount 和 InitialAmount 始终为正数。问题是,当差异为负时,产生的金额实际上会因负差异而增加。它应该执行减法,但事实并非如此。当差异为正时,它工作正常。任何想法为什么会发生这种情况?
我在使用 SQL Server 2008 R2 的 Windows 7 Enterprise SP1 64 位上
【问题讨论】:
-
请提供
some_table和##GlobalTable的示例数据以证明该问题。顺便说一句,如果##GlobalTable中多个可能的行与some_table中的行匹配,UPDATE ... FROM语法可能会导致不确定的结果 -
“当差异为负时”是什么意思?
-
顺便说一句,您为什么要使用全局##temp 表?您是否故意杀死并发而不是使用本地 #temp 表?
标签: sql sql-server-2008-r2 set numeric