SSRS:根据另一个字段中的2个可能值过滤1字段

时间:2017-06-29 15:22:53

标签: reporting-services ssrs-2008 mdx ssrs-2008-r2 reportbuilder3.0

如果我是一个傻瓜,我不会这样做,但我已经大量搜索并尝试了几种选择:无法实现。这是问题所在。

我有以下数据查询: enter image description here

首先,对不起它是法国人。其次,如您所见,字段是"文件编号","年"和#34;不同患者的数量"。

通缉结果:我想过滤2015年和2016年出现的案例编号。

如您所见,某些患者连续几年出现。但是,我想知道有多少人出现在2015年和2016年(不是2014年等)(所以2年的总共2次访问总和)。因此,仅在2015年和2016年对我的数据查询进行过滤,并不能完成这项工作,因为它无法排除仅出现一次的患者。此外,在2015年和2016年过滤,然后Count(Fields!File_number.Value)= 2将无法工作,因为它无法排除2014年可能在这里的患者。

我已经尝试了几个布尔表达式,但是只要我在我的过滤器中包含2年,就会将我的Tablix空白掉。 (可以理解的是,我告诉它Fields!Year.Value必须同时等于2015年和2016年。)

所以我试着绕过它,告诉它并做了以下事情: 表达:

=IIF(Lookup(Fields!FileNumber.Value, Fields!FileNumber.Value, Fields!Year.Value, "Dataset")=2015 AND Lookup(Fields!FileNumber.Value, Fields!FileNumber.Value, Fields!Year.Value, "Dataset")=2016, True, False)

仅适用于1年:只要我将2015年和" AND"添加到2015年或者通过添加一个额外的过滤器,mytable变成空白。

有什么建议吗?谢谢!

1 个答案:

答案 0 :(得分:1)

是的,这不是一个容易解决的问题,你不是一个傻瓜:)你对查询中的双布尔表达式是正确的,并且两个组合查找不起作用无论是。在查找的情况下,LOOKUP返回数据集中的第一个匹配,因此每次这两个查找都将返回第一个值。

还有一个名为LookupSet的函数可以从查询中返回所有匹配项。应该可以围绕此函数创建一个丑陋的表达式,以特别测试字符串2015和2016是否都出现在结果中,如下所示:

=Join(LookupSet(Fields!FileNumber.Value, Fields!FileNumber.Value, Fields!Year.Value, "Dataset"),",")  

然后子串搜索" 2015"和" 2016" (我会让你摆弄那部分)