我在SSRS 2008 R2中有以下Matrix:
我想要做的只是显示“FTE”行有值的列。 (标有红色圆圈)。我已经尝试了过滤器并根据列属性中的表达式显示/隐藏选项,但我无法弄清楚当“category”=“FTE”时如何仅引用行。我的数据如下:
tblPhysicians
employee_id last_name ...
102341145 Smith
123252252 Jones
tblPhysiciansMetrics
id fy period division_name category_name employee_id
123 2014 1 Allergy Overhead 123456
124 2014 1 Allergy Salary 125223
125 2014 1 Allergy FTE 1.0
query
SELECT * FROM
tblPhysicians
INNER JOIN tblPhysicianMetrics
ON tblPhysicians.employee_id = tblPhysicianMetrics.employee_id
WHERE
tblPhysicianMetrics.division_name = @division_name
AND tblPhysicianMetrics.fy = @fy
AND tblPhysicianMetrics.period = @period
请注意,我的Matrix中的行只是category_name,所以我不能只在category_name =“FTE”时隐藏,这不是我想要的。我真正需要的是一些说法,“对于category_name =”FTE“的行,如果未设置该值,则不要显示该列”。这可能吗?
另一种方法是甚至不在查询中获取那些,但是与矩阵的过滤一样,如果我只是将“AND tblPhysiciansMetrix.category_name ='FTE'”添加到WHERE子句中,我的整个数据集就会减少仅限于category_name为FTE的那些记录。
非常感谢任何帮助!
更新:添加Matrix的定义以帮助:
答案 0 :(得分:1)
您需要使用表达式设置列可见性,该表达式检查 FTE 类别列中的所有基础数据。
我有一个简单的数据集:
基于此的简单矩阵:
完全符合您的预期:
因此,在上面的示例中,我们希望隐藏 Brown 列。为此,请对列可见性:
使用这样的表达式=IIf(Sum(IIf(Fields!category_name.Value = "FTE", 1, 0), "last_name") > 0
, False
, True)
这有效地计算了列中的所有字段(由last_name
表达式中的Sum
范围参数确定) - 如果这是> 0显示该列。按要求工作:
答案 1 :(得分:0)
CAVEAT 我不是100%确定如何将这些数据分组到矩阵中。从您的描述中不是100%清楚。让我知道为什么这不起作用(如果没有,我会相应地更新我的答案。
我已使用我的答案的名称值替换了employee_id列,以使我的解释变得简单。
将此嵌套IIF()添加到Matrix列的visibility属性中。
=IIF(Fields!category_Name.Value="FTE" ,IIF( Fields!value.Value >= 0, True,False),false)
它将检查该类别的值和该行的单元格中的“FTE”。