跨同一数据集行的 SSRS 操作 - 子集 - 查找

SSRS operations across lines of the same dataset - Subsetting - Lookup

我有以下数据集:

我需要在 SSRS 中显示两行:一行对应于 IsControl = 0 的销售额,另一行对应于 IsControl = 1。 但是,对于控件 = 1 的行,必须将销售额除以其 Num_Of_Customers 并乘以相同 week_of_day 的 Num_of_Customers,其中 IsControl = 0.

换句话说,我正在将 IsControl = 1 的销售额缩放到 IsControl = 0。以一种我可以在线图上显示两条线的方式。

执行此操作的 SSRS 表达式是什么?

在这种情况下,

Sales 和 Num_Of_Customers 与 IsControl = 0 和 IsControl = 1 等效,但它们通常不同。

如果我理解正确,下面的表达式应该可以满足您的需求。

=IIf(Fields!IsControl.Value = 1,
    Fields!Sales.Value/Lookup(Fields!week_of_day.Value.ToString() & "0", 
        Fields!week_of_day.Value.ToString() & Fields!IsControl.Value.ToString(), 
        Fields!Num_Of_Customers.Value, 
        "DataSet1"),
    Fields!Sales.Value*Fields!Num_Of_Customers.Value)

如果 IsControl 为 1,请查找同一日期 IsControl 为 0 的客户数,然后将 Sales 除以该数字。否则,将 Sales 乘以同一行中的客户数。

如果您只需要 IsControl 为 0 的行的销售额,请使用:

=IIf(Fields!IsControl.Value = 1,
    Fields!Sales.Value/Lookup(Fields!week_of_day.Value.ToString() & "0", 
        Fields!week_of_day.Value.ToString() & Fields!IsControl.Value.ToString(), 
        Fields!Num_Of_Customers.Value, 
        "DataSet1"),
    Fields!Sales.Value)

无论您需要什么,Lookup 都会将您带到 IsControl 为 0 的行。拉出您需要的值并进行任何必要的数学运算。

祝你好运!