SQL乘法更新语句列a x列b更新c

时间:2015-01-29 10:51:40

标签: mysql sql sql-server-2008

我需要更新或select语句来执行以下操作

SoldOut     RefundIn     UnitCost  Total Cost
   0            1          -1.00     ????
   0            10         -1.00     ????
   1             0          1.00     ????
   10            0         10.00     ????

所以我想将单位成本或单位成本中的单位乘以总成本

3 个答案:

答案 0 :(得分:0)

使用update通过计算在DB中存储总成本。

UPDATE <table name> SET total_cost = UnitCost * (SoldOut-RefundIn)

答案 1 :(得分:0)

我会说从不存储计算值,过多的数据不一致风险。创建一个计算计算值的视图。

create view view_name as
select SoldOut, RefundIn, UnitCost, (SoldOut - RefundIn) * UnitCost as TotalCost
from table_name

答案 2 :(得分:0)

  

所以我想将or Out中的单位乘以单位成本以获得总成本

由于您需要选择具有条件的列,因此您可以使用任何方法。

方法1:使用动态SQL动态传递列

 DECLARE @COLUMNNAME NVARCHAR(100)='RefundIn'

 DECLARE @QRY NVARCHAR(MAX)

 SET @QRY = 'UPDATE Yourtable  SET [Total Cost] = '+@COLUMNNAME+' * UnitCost'

 EXEC SP_EXECUTESQL @QRY

方法2:在CASE查询中使用update语句

 UPDATE Yourtable SET [Total Cost] = CASE WHEN  SoldOut = 0 THEN RefundIn * UnitCost
                                      WHEN  RefundIn = 0 THEN SoldOut * UnitCost
                                 END

如果您需要对列名进行硬编码,可以使用以下代码

UPDATE Yourtable SET [Total Cost] = RefundIn * UnitCost