2011-11-15 40 views
1

我想產生如下結果:SQL修復負值

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作爲我的保險分數,我會收到錯誤消息,如無效或其他。

+0

您是否想要:防止負值進入數據庫?允許負數,但以特殊方式處理其顯示?別的東西? – onedaywhen

回答

0

我有一個關於負面保險分數的問題。這是你可以防止進入你的數據庫/表的東西嗎?用你所說的話,保險評分應該是積極的。我認爲邏輯應作爲列的約束條件,以確保記錄的INSERTUPDATE上的數據完整性。

如果您無法做到這一點,您是否可以將Insurance Score Factor設置爲0(或-1或其他標識值),並檢查應用程序代碼中的內容,然後拋出相應的錯誤?

另一種辦法是補充:

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

,以確保您只帶回政策,有效的保險分數。您還可以運行第二個查詢/創建報告來檢查無效的策略,並手動處理它們以輸入有效的保險分數。