按年份分组时 table 中列之间的 SSRS 差异列

SSRS Difference Column between Colums in table when grouping on year

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))
)

正如您所知,您的问题是在这个表达式中产生的:

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

我在总计列中使用了相同的表达式,today.Year 表达式是我所做的唯一更改。

=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))
)

在矩阵中我设置了这样的数据排列:

我明白了:

如果这对你有帮助,请告诉我。

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

=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)))