我需要在我的数据库中设置一些值,但我无法使其工作。 (我使用的是SSMS 2008 R2)
所涉及的表格为dbo.Scales
和dbo.PosScore
。
dbo.Scales
包含四列:
Grade (varchar)
Upper Bound (int)
Lower Bound (int)
Award (varchar)
dbo.PosScore
有两列:
Possible score (int)
Grade (varchar)
我需要根据dbo.PosScore
表中给出的界限,在dbo.Scales
表中填入适当的等级。
最好是参考,即如果我改变边界,那么表格会相应调整。
我应该怎么做?
答案 0 :(得分:1)
如果您希望在更改PosScore
中的值时Scales
中的值发生更改,则基本上有两个选项:在Scales
上创建一个触发器(重新创建)每当需要(或更新它)时使用PosScore
表,或使用动态变化的视图。除非需要更改的数据量过大且重新计算PosScore
值需要太长时间,否则视图应该是最佳选择。
创建视图的一种方法是使用一个合适的表,其数字范围覆盖上限和下限。幸运的是,SQL Server有一个可用于此目的的系统表(假设范围在0-2047范围内。
创建视图的查询可能如下所示:
create view PosScore as
select s.Grade, number as "Possible score"
from master..spt_values v
join scales s on v.number <= s.UpperBound and v.number >= s.LowerBound
and v.type = 'P'