如何在现有客户敞口金额计算中加入开/关交易标志筛选
敞口计算中加入Open/Close flag筛选逻辑的解决方案
问题背景
我在报表中设置了参数,用于切换展示客户包含或排除已结清交易的敞口金额,但无法将Open/Close flag(开/关标志)融入现有计算逻辑。原计算客户敞口的公式如下:
ifnull( sum( IF { FIXED [Customer], [Deal], [Schedule]: COUNTD([Buyback])} > 0 then { FIXED [Customer], [Deal], [Schedule]: AVG(ifnull([Exposure],0))} ELSE 0 END ) ,0)
修改后的公式(含Open/Close flag筛选)
假设:
- 参数名为
[Include Closed Deals](布尔型:勾选=包含已结清交易,不勾选=排除已结清交易) [Open/Close flag]字段取值为'Open'(未结清)或'Closed'(已结清)
修改后的计算逻辑如下:
ifnull( sum( IF // 先处理Open/Close flag的筛选条件 ( [Include Closed Deals] = TRUE() OR [Open/Close flag] = 'Open' ) // 保留原有的Buyback判断逻辑 AND { FIXED [Customer], [Deal], [Schedule]: COUNTD([Buyback])} > 0 then { FIXED [Customer], [Deal], [Schedule]: AVG(ifnull([Exposure],0))} ELSE 0 END ) ,0)
逻辑说明
- 筛选层:通过参数和标志字段联动控制纳入计算的交易范围
- 当参数勾选(包含已结清):所有交易都进入后续计算
- 当参数未勾选(排除已结清):仅保留
[Open/Close flag]为'Open'的未结清交易
- 原有逻辑保留:仅当
[Customer], [Deal], [Schedule]分组下的Buyback计数大于0时,才取该分组的平均Exposure,否则计为0 - 空值处理:最终用
sum汇总结果,ifnull确保空值返回0
如果你的参数类型、标志字段取值不同,只需对应调整判断条件即可。
内容的提问来源于stack exchange,提问作者Prdp
相关产品推荐
相关产品推荐

