简体   繁体   English

计算列(Microsoft SQL Server 2014)

[英]Computed Column (Microsoft SQL Server 2014)

Book

| B_ID |   Name  | Unit_Price|
|------+---------+-----------|
|  B01 |   Math  |     25    |
|  B02 | Science |     34    |

Order 订购

| O_ID | B_ID |  Quantity |Total_Price|
|------+------+-----------+-----------|
|  O01 |  B01 |     2     |     ?     |
|  O02 |  B02 |     5     |     ?     |

How can I get the Total_Price by multiplying Order.Quantity and Book.Unit_Price where Order.B_ID is a FK to Book.B_ID . 我怎样才能乘以得到TOTAL_PRICE Order.QuantityBook.Unit_Price其中Order.B_ID是一个FK到Book.B_ID Thank you! 谢谢!

Sounds more like you need to create a VIEW : 听起来更像您需要创建一个VIEW

CREATE VIEW dbo.OrderPrice
AS

SELECT O.O_ID,
       O.B_ID,
       O.Quantity,
       O.Quantity * B.Unit_Price Total_Price
FROM Order O
INNER JOIN Book B
    ON O.B_ID = B.B_ID;

You can create a function where the computed column would use the function. 您可以创建一个函数,其中计算列将使用该函数。

CREATE FUNCTION dbo.GetTotalPrice(INT @id)
RETURNS DECIMAL(19,4)
AS 
BEGIN
   DECLARE @ret DECIMAL(19,4)
   SELECT @ret = O.Quantity * B.Unit_Price
                 FROM Order O
                   INNER JOIN Book B
                   ON O.B_ID = B.B_ID
                     WHERE B.B_ID = @id
          IF (@ret IS NULL)   
             SET @ret = 0
          RETURN @ret
END

ALTER TABLE dbo.Order
   ADD Total_Price AS dbo.GetTotalPrice(O_ID)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM