2011-11-15 8 views
1

SQL修正負の値

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

私は負の保険のスコアについて質問があります。これはあなたのデータベース/テーブルに入ることを防ぐことができるのでしょうか?あなたが言っているところでは、保険スコアはプラスになる必要があります。私はロジックは、レコードのINSERTまたはUPDATEのデータの整合性を確保するために列の制約として配置する必要があると思う。

これができない場合は、Insurance Score Factorを0(または-1、または他の識別値)に設定し、アプリケーションコードで確認してから適切なエラーを投げますか?

別のオプションは、追加することです:

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

あなたが唯一の有効な保険のスコアで政策を復活させていることを確認します。 2番目のクエリを実行するか、レポートを作成して無効なポリシーをチェックし、手動で有効な保険スコアを入力することもできます。

関連する問題