将一列中的值替换为涉及另一列中值的数学乘积?

时间:2019-10-29 01:58:04

标签: sql sql-server

我有一个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和堆栈交换上进行搜索并没有产生任何类似的查询,我也许可以重新调整用途。如果有人可以帮助我指出正确的方向,我将不胜感激。

2 个答案:

答案 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 

否则,如果您需要更改表中的列值,则需要“哈里的答案”