将(单位*价格)的结果存储为表格总计

时间:2017-07-11 15:27:20

标签: sql-server

我有2张桌子。 TblToy和Tbl2Toy

 TblToy
 TID   TName   TUnit   TPrice
 1     Robot   5       10   
 2     Doll    10      5     

 Tbl2Toy
 TID   TName   Total
 1     Robot        
 2     Doll         

这是代码。

 Create proc ProTotal (@TID int)
 as
 begin
 select TID, TName, TUnit, Price, TUnit * Price as Total
 from TblToy
 where TID = @TID
 end
 go

 Exec ProTotal 1

结果

 TID   TName   TUnit   TPrice   Total
 1     Robot   5       10       50

我想将机器人的总价格存储到Tbl2Toy Total。

3 个答案:

答案 0 :(得分:0)

正如已经提到的,你真的不需要第二张桌子。但是,如果您确实希望以这种方式执行此操作,请将其插入到存储过程而不是SELECT语句中。

 UPDATE     T2
 SET        T2.Total = T1.TUnit * T1.Price
 FROM       Tbl2Toy AS T2
 INNER JOIN TblToy AS T1 ON T1.TID   = T2.TID
 WHERE      T2.TID = @TID

答案 1 :(得分:0)

我不会存储它,但会为此

创建一个视图
create view vwToy as
  select TID, TName, TUnit, TPrice, TUnit * TPrice as Total
  from   tblToy

然后你可以这样做:

select * from vwToy

会给你

TID   TName   TUnit   TPrice   Total
1     Robot   5       10       50
2     Doll    10      5        50

或者如果您只想要一个特定的玩具:

select * from vwToy where TID = 1

会给你

TID   TName   TUnit   TPrice   Total
1     Robot   5       10       50

答案 2 :(得分:0)

我认为您可以省略存储过程并使用MERGE语句完成您想要的操作。

MERGE TblToy2 AS target
USING (SELECT * FROM TblToy) AS source
ON (target.TID = source.TID)
WHEN MATCHED
    THEN UPDATE SET target.TOTAL = source.TUnit * source.TPrice;
GO