2011-11-15 4 views
1

Je voudrais produire le résultat suivant:sql fixent des valeurs négatives

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 

En utilisant les règles ci-dessous:

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 

C'est ce que j'ai jusqu'à présent:

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]; 

Je ne peux pas corriger les valeurs négatives. Je veux avoir le score d'assurance pour être au moins 0, donc si j'ai un -5 comme score d'assurance, j'obtiendrai un message d'erreur comme invalide ou quelque chose.

+0

Voulez-vous: empêcher les valeurs négatives d'entrer dans la base de données? autoriser un nombre négatif mais gérer leur affichage d'une manière spéciale? autre chose? – onedaywhen

Répondre

0

J'ai une question sur les scores d'assurance négatifs. Est-ce quelque chose que vous pouvez empêcher d'entrer dans votre base de données/table? Avec ce que vous dites, un score d'assurance doit être positif. Je pense que la logique devrait être placée comme une contrainte sur la colonne pour assurer l'intégrité des données sur INSERT ou UPDATE des enregistrements.

Si vous ne pouvez pas faire cela, êtes-vous en mesure de définir le Insurance Score Factor à 0 (ou -1, ou une autre valeur d'identification) et vérifiez cela dans votre code d'application, puis lancez l'erreur appropriée?

Une autre option serait d'ajouter:

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

pour vous assurer que rapportez politiques avec un score d'assurance valide. Vous pouvez également exécuter une deuxième requête/créer un rapport pour vérifier les politiques non valides, et les gérer manuellement pour mettre dans un score d'assurance valide.

Questions connexes