要求维护这样一个信息,就是一个列的数据范围,对应一个值,比如对员工的综合评定成绩发奖金
60分以下:0
61~70:100
71~80:200
81~90:300
90以上:500这个信息希望存储到数据库中,而且是可以维护的,比如增加一个范围或者修改一个范围等,就好比改为如下:
60分以下:0
60~70:100
71~75:150
76~85:200
86~90:300
90以上:500
对于这样的标设计,大家有没有什么好办法或者曾经应用的例子有类似的东西的,最好能够好维护一点,谢谢大家

解决方案 »

  1.   


    -- 设计这样的表就行了
    结束分数  值
    60        0
    70        100
    80        200
    90        300
    NULL      500要改的话, 改结束值即可
    要计算值的话, 用一个自定义函数
    CREATE FUNCTION dbo.f_calc(
    @分数 int
    )RETURNS int
    AS
    BEGIN
    DECLARE @re int
    SELECT @re = 值
    FROM 数据范围表
    WHERE 结束分数 < @分数
    IF @@ROWCOUNT = 0
    SELECT @re = 值
    FROM 数据范围表
    WHERE 结束分数 IS NULL
    RETURN(@re)
    END