我有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。
答案 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