SSRS - If 语句使用计算值
SSRS - If statement using calculated values
我正在使用 SSRS 并制作了 "pivot table"。主元 table 有两个计算列,我想使用这些值来获得第三个值,即两个值之间的差值。
这是我的 table 的示例:
*编辑:百分比是具有这些 row/column 属性的大约 40 多个值的平均值 *
Category A B Difference
1 47% 57% B-A
2 45% 49% B-A
3 13% 73% B-A
4 27% 23% B-A
Total 23% 34% B-A
每个百分比都是按 A 和 B 分组的类别的平均值。我需要一个函数来收集 A 的平均值,然后从该行的 B 的平均值中减去它。
到目前为止,我已经尝试了以下方法并导致了错误:
=IIf(Fields!Log1.Value = "End", Avg(Fields!Log1.Value), Nothing) - IIf(Fields!Log1.Value = "Begin", Avg(Fields!Log1.Value), Nothing)
感谢任何帮助。谢谢
我认为这里的问题与您在类别组中引用 Log1 列的方式有关。想想数据在幕后的样子。在每个类别中,您有多个要汇总的行。某些行可能具有不同的 Log1 值。目的是获取具有特定 Log1 值的行的平均值。
实际发生的是它任意选择每个组中的第一个 Log1 值并在表达式中使用它。换句话说,您将根据类别组第一行中的 Log1 获得所有行或 none 行的平均值。
作为旁注,在您的表达式中,您将 Log1 称为文本字段,而在 Avg 函数中,我假设它们实际上应该是两个不同的列,并且您正在尝试对 A 中的数字进行平均和 B 列。
我们真正想要它做的是检查每一行的 Log1 值,然后对这些值进行平均。所以,这是我的建议:
在您的数据集上创建两个计算字段。使用这样的表达式:
=IIf(Fields!Log1.Value = "Begin", Fields!ColumnA.Value, Nothing)
=IIf(Fields!Log1.Value = "End", Fields!ColumnB.Value, Nothing)
在 table 的 A 列中引用这个新的计算字段。对 B 列重复上述步骤。
=Avg(Fields!NewColA.Value)
求差:
=Avg(Fields!NewColB.Value) - Avg(Fields!NewColA.Value)
换句话说,我们强制它逐行过滤值,然后聚合这些过滤值。
我正在使用 SSRS 并制作了 "pivot table"。主元 table 有两个计算列,我想使用这些值来获得第三个值,即两个值之间的差值。
这是我的 table 的示例:
*编辑:百分比是具有这些 row/column 属性的大约 40 多个值的平均值 *
Category A B Difference
1 47% 57% B-A
2 45% 49% B-A
3 13% 73% B-A
4 27% 23% B-A
Total 23% 34% B-A
每个百分比都是按 A 和 B 分组的类别的平均值。我需要一个函数来收集 A 的平均值,然后从该行的 B 的平均值中减去它。 到目前为止,我已经尝试了以下方法并导致了错误:
=IIf(Fields!Log1.Value = "End", Avg(Fields!Log1.Value), Nothing) - IIf(Fields!Log1.Value = "Begin", Avg(Fields!Log1.Value), Nothing)
感谢任何帮助。谢谢
我认为这里的问题与您在类别组中引用 Log1 列的方式有关。想想数据在幕后的样子。在每个类别中,您有多个要汇总的行。某些行可能具有不同的 Log1 值。目的是获取具有特定 Log1 值的行的平均值。
实际发生的是它任意选择每个组中的第一个 Log1 值并在表达式中使用它。换句话说,您将根据类别组第一行中的 Log1 获得所有行或 none 行的平均值。
作为旁注,在您的表达式中,您将 Log1 称为文本字段,而在 Avg 函数中,我假设它们实际上应该是两个不同的列,并且您正在尝试对 A 中的数字进行平均和 B 列。
我们真正想要它做的是检查每一行的 Log1 值,然后对这些值进行平均。所以,这是我的建议:
在您的数据集上创建两个计算字段。使用这样的表达式:
=IIf(Fields!Log1.Value = "Begin", Fields!ColumnA.Value, Nothing) =IIf(Fields!Log1.Value = "End", Fields!ColumnB.Value, Nothing)
在 table 的 A 列中引用这个新的计算字段。对 B 列重复上述步骤。
=Avg(Fields!NewColA.Value)
求差:
=Avg(Fields!NewColB.Value) - Avg(Fields!NewColA.Value)
换句话说,我们强制它逐行过滤值,然后聚合这些过滤值。