自动计算列SQL Server

时间:2012-03-14 09:35:26

标签: sql-server

我想更改一个表并添加一列,这是另外两列的总和,当我添加新数据时,这一列会自动计算。

5 个答案:

答案 0 :(得分:9)

计算列规范的语法如下:

column-name AS formula

如果要将列值存储在数据库中,则应将PERSISTED关键字添加到语法中,如下所示:

column-name AS formula PERSISTED

您没有提及示例,但如果您想添加“sumOfAAndB”列来计算A和B的总和,则语法如下

ALTER TABLE tblExample ADD sumOfAAndB AS A + B

希望有所帮助。

答案 1 :(得分:2)

我建议使用View来计算额外列,而不是将此列添加到表中,并从中读取。

以下是有关如何在此处创建视图的教程:

http://odetocode.com/Articles/299.aspx


您的查看查询类似于:

 SELECT 
    ColumnA, ColumnB, (ColumnA+ColumnB) as ColumnC
  FROM 
    [TableName]

答案 2 :(得分:1)

您可以使用视图,但如果您不想在每次访问视图时产生计算值的成本,则可能需要使用PERSISTED计算值。

e.g。

CREATE TABLE T1 (
    a INT,
    b INT,
    operator CHAR,
    c AS CASE operator
        WHEN '+' THEN a+b
        WHEN '-' THEN a-b
        ELSE a*b
    END
    PERSISTED
) ;

请参阅SQL docs,假设您当然正在使用SQL Server。

答案 3 :(得分:1)

如何在创建新表时创建计算列:

CREATE TABLE PRODUCT
(
       WORKORDERID INT NULL,
       ORDERQTY INT NULL,

       [ORDERVOL] AS CAST
       (
              CASE WHEN ORDERQTY < 10 THEN 'SINGLE DIGIT' WHEN ORDERQTY >=10 AND ORDERQTY < 100 THEN 'DOUBLE DIGIT' 
              WHEN ORDERQTY >=100 AND ORDERQTY < 1000 THEN 'THREE DIGIT' ELSE 'SUPER LARGE' END AS NVARCHAR(100)
       )

)

INSERT INTO PRODUCT VALUES (1,1),(2,-1),(3,11)

SELECT * FROM PRODUCT

答案 4 :(得分:0)

UPDATE table_name SET total = mark1+mark2+mark3;

首先想到你可以将所有数据插入到表中,然后你可以像这样的表格更新表。

//我向你提供帮助