SSRS 表达式:First(Value) 但前提是 Value2 = X

SSRS Expression: First(Value) but only if Value2 = X

抱歉,不确定我的标题有多大意义。

基本上...我有一个报告和数据集(名为 DataSet1)returns 数据有点像这样。

Quarter   MonthID  Month        Value1   Value2   QtrAvgValue1  QtrAvgValue2
Q-1       1        Mar 2017     12       28%      12.3          24.0%
Q-1       2        Feb 2017     15       12%      12.3          24.0%
Q-1       3        Jan 2017     10       32%      12.3          24.0%

Q-2       4        Dec 2016     18       25%      17.3          24.3%
Q-2       5        Nov 2016     14       18%      17.3          24.3%
Q-2       6        Oct 2016     20       30%      17.3          24.3%

最后两列只是该行整个季度的平均值。 [Quarter] 列读作 -1 表示上一季度,-2 表示上一季度。 MonthID 列只是一个自动增量,它会随着过去每个月的增加而增加。所以最近的一个月是 1,下一个月是 2。

我需要一个能让我说出这样的话的表达方式:

当季度 = Q-1 时 return QtrAvgValue1; return 12.3;

我还需要一个表达式,可以说:

当 MonthID = 1 时 return 值 1; return 12;

这可能吗?我不愿意将我的数据集转换成一堆列名荒谬的列

注意:我曾尝试将 IIF 与 SUM/AVG 一起使用,它使用数值作为一种 hack...但我想不出一种方法来处理字符串值。

更新: 我想通了,使用 SSRS 中的 Lookup 和 LookupSet 函数,这是我以前从未使用过的。

示例:

=LookupSet("Q-1", Fields!Quarter.Value, Fields!QtrAvgValue1.Value, "DataSet1")(0)

LookupSet 通常用于一对多关系,但它仍然适用于一对一关系。

这个表达式基本上是说要查找具有 "Q-1" 季度和 return 列 [QtrAvgValue1].

的所有行

Lookup set函数将数据放入一个数组中,所以末尾的“(0)”表示使用数组中的第一个值...与"First()"函数本质上是一样的。