計算

2017-08-04 2 views
1

入力:計算

Iは表5の列を持っている:

KONTO COLLATERAL_TYPE VALUE COLLATERAL_VALUE LOST_probability 

例:

KONTO COLLATERAL_TYPE VALUE COLLATERAL_VALUE LOST_probability 
------------------------------------------------------------------ 
1   A   100   4    55% 
1   B   100   40    5% 
1   C   100   50    15% 
2   A   200   50    55% 
2   C   200   180    15% 
2   B   200   120    5% 

VALUE単一KONTOに全体値であり、1 KONTOを持つことができCOLLATERAL_TYPEはほとんどありません。 最低のLOST_probabilityを持つCOLATERALで始まるVALUEを減らし、COLLATERAL_VALUEがVALUEより大きい場合は0を返します。 計算は単一のKONTOで行う必要があります。

出力:

KONTO COLLATERAL_TYPE VALUE COLLATERAL_VALUE LOST_probability CALCULATION 
----------------------------------------------------------------------------- 
1   A   100   4    55%  6 
1   B   100   40    5%   60 
1   C   100   50    15%  10 
2   A   200   50    55%  0 
2   C   200   180    15%  0 
2   B   200   120    5%   80 

式:

計算(1)= VALUE - (最低LOST_probabilityによって)COLLATERAL_VALUE 計算(2)=計算(1) - (第2最低LOST_probabilityによって)COLLATERAL_VALUE

私はMS AccessでMS Access/SQLを使用しています。

答えて

0

これが何をすべき:

DLooklup("Value", "MyTable", "KONTO = " & KONTO & " AND LOST_probability = " & DMin("LOST_probability", "MyTable", "KONTO = " & KONTO)) - DSum("COLLATERAl_VALUE", "MyTable", "KONTO = " & KONTO & " AND LOST_probability <= " & LOST_probability) 

DLooklup("Value", "MyTable", "KONTO = " & KONTO & " AND LOST_probability = " & DMin("LOST_probability", "MyTable", "KONTO = " & KONTO))KONTOLOST_probability最低で列の値を検索し、あなたは常に与えられたKONTOでも同じですValueValue場合に置き換えることができます。同等以下LOST_probability

と同じKONTO内のすべてのエントリから

DSum("COLLATERAl_VALUE", "MyTable", "KONTO = " & KONTO & " AND LOST_probability <= " & LOST_probability) substractsすべてCOLLATERAL_VALUE Sこれはあなたのテーブル内のすべての使用の列が有効な数値列です前提としています。

これは、純粋なSQLの手法です。これをVBAで計算してテーブルに出力すると、これが高速になる可能性があります。