时间:2015-11-17 16:31:33

标签: reporting-services ssrs-2008-r2 ssrs-tablix

Show Report - Click Here 在我的查询中,我有一个年份字段,我对其进行了列分组。我在产品组,产品部分和项目上进行了行分组。如果今年的某个部分没有销售,去年的销售额为214美元,那么该部分的差异列显示214美元(214美元)。请注意,数据库中没有与销售数据相同的销售数据,因此今年的销售额在报表中为空值。

这是我正在使用的表达,但它不起作用:

=IIF(
     ISNothing(Sum(IIF(Fields!Year.Value = MAX(Fields!Year.Value),
                       1,
                       0) * Fields!Subtotal.Value)) = True,
     -1 * (Sum(IIF(Fields!Year.Value = Min(Fields!Year.Value),
                   1,
                   0) * Fields!Subtotal.Value)),
     Sum(IIF(Fields!Year.Value = Max(Fields!Year.Value),
             Fields!Subtotal.Value,
             -1 * Fields!Subtotal.Value))
)

2 个答案:

答案 0 :(得分:0)

如您所知,您的问题是在此表达式中生成的:

Sum(IIF(Fields!Year.Value = Max(Fields!Year.Value),
             Fields!Subtotal.Value,
             -1 * Fields!Subtotal.Value))

您在评论中提到2015年Stock Cabinets没有行,因此该组的最大年份值是2014年。

尝试使用:

Sum(IIF(Fields!Year.Value = Today.Year,
             Fields!Subtotal.Value,
             -1 * Fields!Subtotal.Value))

如果您的最大年份是当前日历年,它将起作用。 Today.Year在运行时获取系统的当前日历年。

更新:我尝试创建一个最小且可验证的问题示例。

这是我使用的数据集。

select 10 Value, 2015 [Year], 'Otro' Category
union all
select 20 Value, 2015 [Year], 'Otro' Category
union all
select 30 Value, 2015 [Year], 'Otro' Category
union all
select 10 Value, 2014 [Year], 'Otro' Category
union all
select 7 Value, 2014[Year], 'Stock Cabinets' Category
union all
select 3 Value, 2014 [Year], 'Stock Cabinets' Category

我在我的总栏目中使用了相同的表达式,今天。表达式是我做出的唯一改变。

=IIF(
    ISNothing(Sum(IIF(Fields!Year.Value = max(Fields!Year.Value),
                       1,
                       0) * Fields!Value.Value)) = True,
     -1 * (Sum(IIF(Fields!Year.Value = Min(Fields!Year.Value)
     ,1
     ,0) * Fields!Value.Value)),
    Sum(IIF(Fields!Year.Value = Today.Year,
             Fields!Value.Value,
             -1 * Fields!Value.Value))
)

在矩阵中我设置了这种数据安排:

enter image description here

我明白了:

enter image description here

请告诉我这是否可以帮助您。

答案 1 :(得分:0)

我明白了。我用这个来表达我的意思:

=IIF(MAX(Fields!Year.Value)<> MAX(Parameters!Year.Value(0)), Sum(IIF(Fields!Year.Value = Max(Fields!Year.Value), Fields!Subtotal.Value, -1*Fields!Subtotal.Value))*-1, Sum(IIF(Fields!Year.Value = Max(Fields!Year.Value), Fields!Subtotal.Value, -1*Fields!Subtotal.Value)))