按降序计算

时间:2017-08-04 11:38:20

标签: sql ms-access

输入:

我在表格中有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的总体价值,而一个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

公式:

CALCULATION(1)= VALUE - COLLATERAL_VALUE(最低LOST_probability) 计算(2)=计算(1) - COLLATERAL_VALUE(第二低LOST_probability)

我在MS Access中使用MS Access / SQL。

1 个答案:

答案 0 :(得分: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))查找LOST_probabilityKONTO最低的行的值,如果Value始终为Value,则可以将其替换为KONTO在给定的DSum("COLLATERAl_VALUE", "MyTable", "KONTO = " & KONTO & " AND LOST_probability <= " & LOST_probability)中也是如此。

COLLATERAL_VALUE减去相同KONTO中所有条目的所有LOST_probabilitypoints:[]

这假设表中所有使用的列都是有效的数字列。

请注意,这是一种纯SQL方法。在VBA中计算并将其输出到表可能会加快这一速度。