SSRS Lookup函数实现Dataset2 Column1优先匹配Column2兜底方法问询
SSRS 优先匹配多字段的Lookup实现方案
核心实现逻辑
先通过Lookup函数取Dataset2的Column1匹配结果,判断结果为空时再调用Lookup取Column2的结果即可。
直接可用的表达式代码
把以下表达式粘贴到Dataset1对应绑定的文本框中即可:
=IIF( IsNothing(Lookup(Fields!WONUMBER.Value, Fields!WONUMBER.Value, Fields!Column1.Value, "Dataset2")), Lookup(Fields!WONUMBER.Value, Fields!WONUMBER.Value, Fields!Column2.Value, "Dataset2"), Lookup(Fields!WONUMBER.Value, Fields!WONUMBER.Value, Fields!Column1.Value, "Dataset2") )
注意事项
- 表达式中的
Dataset2需要和你报表中定义的第二个数据集名称完全一致,必须用双引号包裹 - 如果业务场景中Column1存在合法的空值,可调整判断条件为判断文本长度,避免误触发降级逻辑:
=IIF( Len(Trim(Lookup(Fields!WONUMBER.Value, Fields!WONUMBER.Value, Fields!Column1.Value, "Dataset2"))) = 0, Lookup(Fields!WONUMBER.Value, Fields!WONUMBER.Value, Fields!Column2.Value, "Dataset2"), Lookup(Fields!WONUMBER.Value, Fields!WONUMBER.Value, Fields!Column1.Value, "Dataset2") ) - 如果Dataset2中同一个WONUMBER对应多条数据,需要将
Lookup替换为LookupSet函数,配合First、Sum等聚合函数提取结果 - 若数据量较大,可把第一次Lookup的结果存到隐藏文本框中复用,避免重复调用Lookup函数提升性能:
- 先在当前行新增隐藏文本框
Textbox_Column1,值为=Lookup(Fields!WONUMBER.Value, Fields!WONUMBER.Value, Fields!Column1.Value, "Dataset2") - 最终展示的文本框表达式改为:
=IIF(IsNothing(ReportItems!Textbox_Column1.Value), Lookup(Fields!WONUMBER.Value, Fields!WONUMBER.Value, Fields!Column2.Value, "Dataset2"), ReportItems!Textbox_Column1.Value) - 先在当前行新增隐藏文本框
内容的提问来源于stack exchange,提问作者Sebastian
相关产品推荐
相关产品推荐

