【问题标题】:Filter Columns based the condition of a Row根据行的条件过滤列
【发布时间】:2014-01-10 15:34:56
【问题描述】:

我在 SSRS 2008 R2 中有以下矩阵:

我想做的只是显示“FTE”行有值的列。 (用红色圆圈标记)。我已经尝试了基于列属性中的表达式的过滤器和显示/隐藏选项,但我不知道如何仅在“类别”=“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

请注意,我的矩阵中的行只是 category_name,所以当 category_name = "FTE" 时我不能隐藏,这不是我真正想要的。我真正需要的是某种说法,“对于 category_name = "FTE" 的行,如果未设置该值,则不要显示该列”。这可能吗?

另一种方法是甚至不获取查询中的那些,但是与矩阵的过滤一样,如果我只是将“AND tblPhysiciansMetrix.category_name = 'FTE'”添加到 WHERE 子句中,我的整个数据集就会减少仅适用于 category_name 为 FTE 的那些记录。

非常感谢任何帮助!

更新:添加了 Matrix 的定义来帮助:

【问题讨论】:

  • AND ((category_name = 'FTE' and employee_id is not null) OR category_name 'FTE') 类型的逻辑是否有效?由于所有列和行标题都模糊了,我猜测这里的部分逻辑。

标签: sql-server reporting-services ssrs-2008-r2


【解决方案1】:

您需要使用一个表达式来设置列的可见性,该表达式会检查列中所有基础数​​据的 FTE 类别。

我有一个简单的数据集:

还有一个基于此的简单矩阵:

看起来和你期望的完全一样:

所以在上面的例子中,我们希望 Brown 列被隐藏。为此,请对 Column Visibility 使用如下表达式:

=IIf(Sum(IIf(Fields!category_name.Value = "FTE", 1, 0), "last_name") > 0
  , False
  , True)

这有效地计算了列中的所有字段(由Sum 表达式中的last_name 范围参数确定) - 如果大于 0,则显示该列。按要求工作:

【讨论】:

  • 嗨,@russds,这有帮助吗?我是否正确理解了您的要求?
【解决方案2】:

CAVEAT 我不能 100% 确定您是如何在矩阵中对这些数据进行分组的。从您的描述中不是 100% 清楚。让我知道为什么这不起作用(如果不起作用,我会相应地更新我的答案。

我已将employee_id 列替换为我的答案的名称值,以保持我的解释简单。

将此嵌套的 IIF() 添加到矩阵列的可见性属性中。

 =IIF(Fields!category_Name.Value="FTE" ,IIF( Fields!value.Value >= 0, True,False),false)

它将检查类别的值和该行单元格中的“FTE”。

【讨论】:

  • 谢谢。我在列属性中添加了“=IIF(Fields!category_name.Value="FTE", IIF(Fields!amount.Value >=0, True, False), false)" ("amount") 是字段的名称具有该值,但报告仍显示这些列。我将用我的矩阵定义的屏幕截图更新我的问题。
猜你喜欢
  • 2013-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-25
  • 2022-12-09
  • 2018-11-25
  • 1970-01-01
  • 2014-08-12
相关资源
最近更新 更多