2017-11-29 3 views
0

期限が<(期限切れ)の場合にのみ、請求書を取得し、支払期日に基づいて利息を計算する必要があります。私は、アプリケーションのBIレイヤーで料金を請求するよりも、インボイスを取得しているストアドプロシージャの利子を計算するのがはるかに速いと考えました。this was my reference for that assumption問題SQL Serverの条件に「ビット」値を使用して比例値を計算する

私の問題は、「ビット」値は= 1マイSQL条件が

DECLARE @dailydiscount decimal; 
DECLARE @proRata bit = (SELECT [ProRataFee] from [tbl_FinanceFee] where [customerID] = @ID) 

IF (@proRata = 1) 
    SET @dailydiscount = @discountRate/@DaysInMonth; 
else 
    SET @dailydiscount = 1 

を下回っているときに私が動作するように条件を得ることができないので、私の問題は、私はいつでも@proRata = 1@dailydiscount=0を見ることができるにもかかわらず、ということであるということです小数点以下の値にする必要があります。奇妙な場合@proRata = 0@dailydiscount=1ロジックがある程度機能します

一部の顧客には利率が課され、他の人には課金されませんが延滞した請求書の割合延滞期日の

PS @proRataの型をintに変更しようとしても問題は解決されませんでした。 (@discountRate & @DaysInMonth)が期待どおりに動作し、種類がある

他の変数:小数点とそれぞれ

答えて

1

をint型では、あなたは、たとえばDECIMAL(4,2)を入力することがdailydiscountを変更しようとしています。私はデフォルトで10進数が(18,0)だと思う。

+0

どのような簡単な解決策です!ありがとう、私はそれがこれは簡単だったことを知っていた - 私は選択とロジックをそこに適用でCASEステートメントを使用して終了したいと思います。私は、このソリューションがSPを今から6ヶ月読むのがはるかに簡単になると思う – Daniel

関連する問題