按年份分组时 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)))
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)))