如何将计算列添加到需要连接语句的表中?

时间:2016-01-30 05:12:03

标签: sql sql-server

我无法弄清楚我的语法问题。我正在尝试将计算列添加到订单表。为了做到这一点,我需要加入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)

2 个答案:

答案 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);