繁体   English   中英

如何使用SQL Server 2008 R2创建带有一个列的表,该表将自动计算另一列的总和?

[英]How to create a table with a column that will automatically compute the sum of the other column using SQL Server 2008 R2?

我想创建一个表,该表将自动计算另外四个列的值,该表称为totalAmount。

我的SQL脚本无法正常工作。 请指导我。 谢谢。

这是我的sql,

CREATE TABLE dbo.phicTF(
guid            UNIQUEIDENTIFIER NOT NULL DEFAULT NEWSEQUENTIALID() PRIMARY KEY,
phno            NVARCHAR(14)        NOT NULL,
memLname        NVARCHAR(MAX)       NOT NULL,
memFname        NVARCHAR(MAX)       NOT NULL,
memMname        NVARCHAR(MAX)       NOT NULL,
pLname          NVARCHAR(MAX)       NOT NULL,
pFname          NVARCHAR(MAX)       NOT NULL,
pMname          NVARCHAR(MAX)       NOT NULL,
preltomem       NVARCHAR(MAX)       NOT NULL,
membership      NVARCHAR(MAX)       NOT NULL,
pAge            NVARCHAR(MAX)       NOT NULL,
pSex            NVARCHAR(MAX)       NOT NULL,
conDateFrom     DATE                NOT NULL,
conDateTo       DATE                NOT NULL,
icdCode         NVARCHAR(MAX)       NOT NULL,
fcRateFac       NVARCHAR(MAX)       NOT NULL,
fcRatePF        NVARCHAR(MAX)       NOT NULL,
scRateFac       NVARCHAR(MAX)       NULL,
scRatePF        NVARCHAR(MAX)       NULL,
totalAmount  AS SUM(fcRateFac+fcRatePF+scRateFac+scRatePF)

) 走

CREATE TABLE dbo.phicTF(
guid            UNIQUEIDENTIFIER NOT NULL DEFAULT NEWSEQUENTIALID() PRIMARY KEY,
phno            NVARCHAR(14)        NOT NULL,
memLname        NVARCHAR(MAX)       NOT NULL,
memFname        NVARCHAR(MAX)       NOT NULL,
memMname        NVARCHAR(MAX)       NOT NULL,
pLname          NVARCHAR(MAX)       NOT NULL,
pFname          NVARCHAR(MAX)       NOT NULL,
pMname          NVARCHAR(MAX)       NOT NULL,
preltomem       NVARCHAR(MAX)       NOT NULL,
membership      NVARCHAR(MAX)       NOT NULL,
pAge            NVARCHAR(MAX)       NOT NULL,
pSex            NVARCHAR(MAX)       NOT NULL,
conDateFrom     DATE                NOT NULL,
conDateTo       DATE                NOT NULL,
icdCode         NVARCHAR(MAX)       NOT NULL,
fcRateFac       NVARCHAR(MAX)       NOT NULL,
fcRatePF        NVARCHAR(MAX)       NOT NULL,
scRateFac       NVARCHAR(MAX)       NULL,
scRatePF        NVARCHAR(MAX)       NULL,
totalAmount  AS cast(fcRateFac as int)+cast(fcRatePF as int)+cast(scRateFac as int)+cast(scRatePF as int)

)

用这个

total列定义为NVARCHAR(MAX)并在INSERTUPDATE上添加触发器。

在触发器中,获取4列的值对其求和,然后分配给total列。

将值插入表中时,将TotalAmount声明为小数(15,2),以计算totalamount列。

创建表t(col1 int,col2,int,....总计十进制(15,2)

插入t(col1,col2,col3,totalamount)值(val1,val2,val3,val1 + val2)

暂无
暂无

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

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