我无法弄清楚我的语法问题。我正在尝试将计算列添加到订单表。为了做到这一点,我需要加入2个表(订单和产品)。
ALTER TABLE tblOrder_Product
ADD [TotalCost] money
AS (SELECT (([tbop].[Quantity])*([P].[ProductPrice]) as TotalCost)
FROM tblOrder_Product tbop INNER JOIN Product P ON tbop.ProductID = P.ProductID
GROUP BY TotalCost)
答案 0 :(得分:0)
您只能根据该表中的值添加计算列。如果要创建触发器来管理值,可以创建自己的逻辑计算列,在触发器代码中可以引用其他表,但通常不建议使用触发器。
答案 1 :(得分:0)
如果您可以编写一个标量值函数,该函数只接受表中的值并返回您要查找的值,则可以使用该值定义计算列。例如,在您的情况下:
create function dbo.fn_TotalCost(@quantity int)
returns float
as
begin
declare @r float;
SELECT @r = @quantity*[P].[ProductPrice]
FROM tblOrder_Product tbop INNER JOIN Product P ON tbop.ProductID = P.ProductID
GROUP BY TotalCost;
return @r;
end
go
alter table dbo.yourTable
add TotalCost as dbo.fnTotalCost(ProductID, Quantity);