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

时间:2016-07-12 06:47:36

标签: reporting-services expression ssrs-2012

我有以下数据集:

enter image description here

我需要在SSRS中显示两行:一行对应于Sales for IsControl = 0,另一行对应于IsControl = 1。 但是,对于具有control = 1的行,必须为其Num_Of_Customers划分Sales,并将其乘以IsControl = 0的同一week_of_day的Num_of_Customers。

换句话说,我将IsControl = 1的销售额扩大为IsControl = 0.我可以在线图上显示两条线。

这样做的SSRS表达是什么?

在这种情况下,Sales和Num_Of_Customers等效于IsControl = 0和IsControl = 1,但它们通常是不同的。

1 个答案:

答案 0 :(得分: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的行。拉出您需要的值并做必要的数学运算。

祝你好运!