繁体   English   中英

SQL Server更新列基于另一个表中的值

[英]SQL Server Update Column based on value from another table

如果我应该使用触发器或过程,请提供帮助。 我试图更新ScaleRatingGSelfAssessmentGRatingScale如果在得分GSelfAssessment落在GRatingScale的最小值和最大值之间的分数。

GSelf评估表

在此处输入图片说明

GRatingScale表

在此处输入图片说明

最好在更新或插入时为每一行实现。 我相信SQL触发器是最合适的触发器。 研究完成后,我了解触发器中插入/删除的概念。 例如

CREATE TRIGGER [dbo].[TR_GSelfAssessment_update] ON [dbo].[GSelfAssessment]
FOR UPDATE
AS
BEGIN

    UPDATE GSelfAssessment
    SET GSelfAssessment.ScaleRating= (Select )---this is where i have a problem-----
  END

我相信这里有Guru可以为我提供解决方案。 我会学到很多。

SQL Server支持计算列。 如果要使ScaleRating始终与其余数据对齐,那么这是最好的方法:

alter table GSelfAssessment
    add ScaleRating as ( . . . );

这将添加一个新的“列”,该列将在查询中使用该值时进行计算。 如果计算成本很高或您要建立索引,请使用persisted因此该值实际上与其余数据一起存储-并在需要时重新计算。

您也可以在create table语句中添加计算列。 如果已经创建了表,则可以删除该列并重新添加或修改它。

您不应该有该列。 在需要时加入评分表。 如果可以简化视图,则可以创建视图。

select … 
from GSelfAssessment  a
inner join 
GRatingScale  r 
on (a.Score>r.MinScore and a.Score<=r.MaxScore)

根据需要调整/创建视图

暂无
暂无

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

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