如何将Crystal Report中的嵌套if公式转换为Power BI paginated report表达式
Crystal Report公式转Power BI Report Builder表达式实现
原公式逻辑梳理
- 外层判断:字段A为空直接返回0
- 字段A不为空时,根据参数Q的取值选择计算基数:
- Q=0时用字段D作为计算基数
- Q≠0时用参数Q作为计算基数
- 内层计算逻辑统一:
- 字段B=1时,返回 计算基数 / 字段C
- 字段B=2且字段C≠0时,返回 计算基数 * 字段C
- 其余情况返回0
实现1:IIF嵌套版本(和原Crystal Report逻辑完全对齐)
=IIF(IsNothing(Fields!A.Value), 0, IIF(Parameters!Q.Value = 0, IIF(Fields!B.Value = 1, Fields!D.Value / Fields!C.Value, IIF(Fields!B.Value = 2 And Fields!C.Value <> 0, Fields!D.Value * Fields!C.Value, 0) ), IIF(Fields!B.Value = 1, Parameters!Q.Value / Fields!C.Value, IIF(Fields!B.Value = 2 And Fields!C.Value <> 0, Parameters!Q.Value * Fields!C.Value, 0) ) ) )
注意:原逻辑中B=1的分支未判断C是否为0,若存在C=0的场景会触发除零错误,可根据业务需要自行给该分支增加C≠0的判断
实现2:SWITCH版本(代码更简洁易维护)
=SWITCH( IsNothing(Fields!A.Value), 0, Fields!B.Value = 1, IIF(Parameters!Q.Value=0, Fields!D.Value, Parameters!Q.Value) / Fields!C.Value, Fields!B.Value = 2 And Fields!C.Value <> 0, IIF(Parameters!Q.Value=0, Fields!D.Value, Parameters!Q.Value) * Fields!C.Value, True, 0 )
内容的提问来源于stack exchange,提问作者Anish
相关产品推荐
相关产品推荐

