我有一个SQL数据库,其中包含一个销售数据表。该表中的两列的类型为“ Money,null”。由于该数据库所依赖的软件使用不正确,因此将值分配给了列B,而该值本应分配给列A。
B列仅包含0.0000或正数值数据,该数据是以美分为单位的货币值。 A列有一些正值,一些负值和一些0.0000数值数据,这些数据是美元货币值。 A列中的数据是准确的,应该保留。首先应将B列中的值除以100(转换为美元),然后将其设为负值,然后将其添加到A列中的数据中(如果适用)。
然后可以删除B列中的数据,那里的所有值最终应为0.0000。
示例起始数据:
Column_A Column_B
0.0000 2500.0000
40.0000 1000.0000
-25.0000 0.0000
-32.0000 1500.0000
0.0000 0.0000
Column_B值转换为: -25.0000 -10.0000 0.0000 -15.0000 0.0000
并添加到它们各自的Column_A值。 B列中的数据永远不会以负数开头。
示例结束数据:
Column_A Column_B
-25.0000 0.0000
30.0000 0.0000
-25.0000 0.0000
-47.0000 0.0000
0.0000 0.0000
我对SQL的了解非常有限,我可以执行简单的查询,但是我没有进行此类数学运算的经验,并且在google和堆栈交换上进行搜索并没有产生任何类似的查询,我也许可以重新调整用途。如果有人可以帮助我指出正确的方向,我将不胜感激。
答案 0 :(得分:1)
首先进行选择,以确保不会发生任何情况(除以零错误等),如下所示:
select
Column_A
, Column_B
, Column_A+(Column_B/100)*-1.0
from your_table
如果所有检查都首先进行数学运算,请更新column_A
,然后更新column_B
。
因此您的SQL语句将如下所示:
update your_table
set Column_A = Column_A+(Column_B/100)*-1.0
, Column_B = 0.00
答案 1 :(得分:0)
如果您的应用仍在运行,并且出现相同的错误,并且您需要检索包含所需信息的列,请尝试以下操作:)
(它将使用您想要的结果创建一个名为Column_C的新列)
SELECT *, (([Column_B] * -0.01) + [Column_A]) AS Column_C FROM myTable
否则,如果您需要更改表中的列值,则需要“哈里的答案”