2013-07-17 113 views
4

我米具有表乘以同一表中的两列和

SALES(sno,comp_name,quantity,costperunit,totalcost) 

供给costperunit值之后存储结果到相同的表的第三列,totalcost需要被计算为"totalcost=quantity*costperunit".

我想将'quantity''costperunit'列相乘,并将结果存储在同一表的'totalcost'列中。

我已经试过这样:

insert into SALES(totalcost) select quantity*costperunit as res from SALES 

但它失败!

有人请帮我实现这个.. 由于提前

+0

作为最佳实践,不存储,可以计算出的属性/导出 – rags

+1

我没有得到ü.. – rtvalluri

+0

不要存储列的总成本,因为它可以从其他两列,数量和costperunit派生出来 – rags

回答

4

尝试更新表

UPDATE SALES SET totalcost=quantity*costperunit 
+0

谢谢alottt ..!它的工作..!谢谢! – rtvalluri

+1

不客气。请将此标记为答案。 – TechDo

3

您需要使用更新。

UPDATE SALES SET totalcost=quantity*costperunit 
1

尝试这种在插入新行

 INSERT INTO test(sno,comp_name,quantity,costperunit,totalcost) 
     Values (1,@comp_name,@quantity,@costperunit,@quantity*@costperunit) 
1

最好不要存储可以计算领域,但如果你想,与SQL Server,你可以设置一个字段自动计算,当值在那儿。

+0

怎么可能..请解释.. – rtvalluri

+0

如果您使用的是SQL Server Management Studio,在创建或修改名为“Table Designer”下的“Computed Column Specification”的表格时会有一个列属性(它可以通过代码完成但是这更容易)。您可以在其中放置表达式,如[quantity] * [costperunit],并且该字段将始终根据该表达式自动进行评估 - 这意味着您不必进行手动计算。 –

+0

Dats真的是更聪明的方式!非常感谢!它的工作 – rtvalluri

1

如果您不手动计算此字段,而是将其设置为computed column,则会更好 - 因此它会自动为您计算。

你可以用下面的查询列:

ALTER TABLE Sales 
DROP COLUMN totalcost 

ALTER TABLE Sales 
ADD totalcost AS quantity*costperunit 

DEMO

+0

请详细告诉我.. – rtvalluri

+1

@RavitejA没有更多的补充,如果你运行该ALTER你的'totalcost'将从现在开始总是自动显示为“数量* costperunit”的产品。它不会存储自己的值,但只要选择它就可以随时计算。此外,您将无法再手动更改其值。如果不确定,请尝试使用新列。 –

+0

错误“语法不正确” – rtvalluri