2011-01-04 11 views
0

現在スカラー値関数を作成していますが、返された結果にいくつか問題があります。10進数/パーセントとして戻り値を返します

私は問題を、2つの日付間の差を百分率/小数として変換する計算に絞り込んだ。関係なく、私がしようとどのような戻り値は、私は残りの部分は、いくつかの排除とテストを通じて正常に動作している知って、常に全体の数

set @earnedpremium = (@premium * @pretripearnings) + ((@premium - (@premium * @pretripearnings)) * cast((datediff(day, @outdate, @experiencedate)/datediff(day, @outdate, @returndate))as decimal(5,2)))

キャストセクションには、パーセンテージを返す必要はありません。

誰かが間違って何をしているのか理解してもらえますか?

答えて

1

DATEDIFFはINTEGERを返し、そうあなたはDECIMALにその操作の両方の部分をキャストする必要があるからです:

set @earnedpremium = (@premium * @pretripearnings) + ((@premium - (@premium * @pretripearnings)) 
* (CAST(datediff(day, @outdate, @experiencedate) AS DECIMAL(5,2))/
    CAST(datediff(day, @outdate, @returndate) AS DECIMAL(5,2))) 
+0

ありがとうございました。論理はいつものように私の頭の中で働くが、Syntaxは私を逃す。 –

関連する問題