sql修复负值

时间:2011-11-15 23:59:58

标签: sql ms-access ms-access-2007

我想产生以下结果:

Table:[0050 Fix No Hit].[Fix_No_Hit]
Policy Number:     Insurance Score:   Insurance Score Factor:
100                  500                     2.13
101                  720                     1.47
102                  815                     1.00
103                  900                     0.69

使用以下规则:

Table: Tier_InsuranceScore
Insurance Score Chart:                      Factor:                 
649 or below                           2.13
(i assume insurance score has to be greater than 0) 
650 to 699                             1.86
700 to 799                             1.47
800 to 849                             1.00
850 to 899                             0.82
900 or above                           0.69

这是我到目前为止所做的:

    SELECT HWData.[Policy Number], [0050 Fix No Hit].[Fix_No_Hit], 
       iif([0050 Fix No Hit].[Fix_No_Hit] < 0, "Invalid",
       iif([0050 Fix No Hit].[Fix_No_Hit] <= 649, 2.13,
       iif([0050 Fix No Hit].[Fix_No_Hit] <= 699, 1.86, 
       iif([0050 Fix No Hit].[Fix_No_Hit] <= 799, 1.47, 
       iif([0050 Fix No Hit].[Fix_No_Hit] <= 849, 1.00, 
       iif([0050 Fix No Hit].[Fix_No_Hit] <= 899, 0.82, 
       iif([0050 Fix No Hit].[Fix_No_Hit] >= 900, 0.69, 0)))))) AS [Insurance Score Factor]
    FROM [0050 Fix No Hit];

我无法修正负值。我希望保险分数至少为0,所以如果我的保险分数为-5,我会得到一条错误消息,如无效或其他。

1 个答案:

答案 0 :(得分:0)

我对负保险分数有疑问。这是否可以阻止您进入您的数据库/表?根据你的意思,保险分数必须是积极的。我认为逻辑应该作为列的约束,以确保记录的INSERTUPDATE上的数据完整性。

如果您无法这样做,是否可以将Insurance Score Factor设置为0(或-1,或其他标识值)并在应用程序代码中检查它,然后抛出相应的错误?

另一种选择是添加:

WHERE [0050 Fix No Hit].[Fix_No_Hit] > 0

确保您只带回有效保险分数的政策。您还可以运行第二个查询/创建报告以检查无效策略,并手动处理它们以输入有效的保险分数。