2011-11-15 3 views
1

保険私は、次の結果を生成したいグレーディングポリシーのSQL IIF文の

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] <=649, 2.13, 0), 
    iif([0050 Fix No Hit].[Fix_No_Hit] <=699, 1.86, 0), 
    iif([0050 Fix No Hit].[Fix_No_Hit] <=799, 1.47, 0), 
    iif([0050 Fix No Hit].[Fix_No_Hit] <=849, 1.00, 0), 
    iif([0050 Fix No Hit].[Fix_No_Hit] <=899, 0.82, 0), 
    iif([0050 Fix No Hit].[Fix_No_Hit] >=900, 0.69, 0) 
FROM [0050 Fix No Hit]; 

もう一度取得しています

2.13 0 0 0 0 0 for policy 100 
and 0 0 1.47 0 0 0 for policy 101 

しかし、結果として1つの列が必要です。

+0

アダムは、私はその作業を思ういけない、私はあなたが近くにいると思います。 – sc1324

+0

あなたが私の答えにコメントしていないか、@adamwengerを含んでいれば、私はメッセージ通知を受け取りません。問題を見つけました。答えを更新しました。 –

+0

Chen、負の値についての質問は、おそらく 'iif()'ステートメントのヘルプを要求する元の質問を変更する代わりに、2番目の質問であったはずです。これは、あなたがトピックについてもっと知っている質問/回答/コメントを保持するのに役立ちます。 –

答えて

0

は、あなたは自分のiif()文をネストする必要があります。

SELECT HWData.[Policy Number], 
    [0050 Fix No Hit].[Fix_No_Hit], 
    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)))))) 
FROM [0050 Fix No Hit]; 
関連する問題