添加使用其他列字段作为操作数的列,例如添加和百分比计算

时间:2014-04-21 11:20:59

标签: sql sql-server

ALTER PROCEDURE [dbo].[Sp_TotalMarks]
AS
BEGIN
    SELECT Student_Id, Stu_Name, Maths, English, Hindi,
           (Maths + English + Hindi) AS 'Total',
            CAST(CAST((Maths + English + Hindi) AS NUMERIC(8,2)) / 300 * 100 AS NUMERIC(8,2)) AS 'Percentage'
    FROM tbl_Marks

END

这是我用来显示百分比的程序。 如果一个班级中有100名学生,并且我想显示每个学生的百分比,那么动态计算%年龄并返回答案的SP将非常耗时。之前我试图在tbl_Marks本身中添加一列百分比。是否可以在存储过程中实现触发器,该过程被调用' INSERT'或者'更新'对tbl_Marks的操作。我从来没有使用过触发器。如果你能用一个查询解释这个问题的解决方案那就太好了。提前谢谢。

1 个答案:

答案 0 :(得分:1)

computed column可以使用表中其他列的数据来计算它所属的列的值。而computed column是一个虚拟列,没有物理存储在表中,除非该列标记为PERSISTED。

将表定义更改为:

ALTER TABLE tbl_Marks ADD total AS (Maths + English + Hindi) PERSISTED;
ALTER TABLE tbl_Marks ADD Percentage AS CAST(CAST((Maths + English + Hindi) AS NUMERIC(8,2)) / 300 * 100 AS NUMERIC(8,2)) PERSISTED;

这将向表中添加两列,这些列将反映每次更新或插入时的计算值。

您可以查看DEMO here。希望这会有所帮助!!!