簡體   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