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))
)
答案 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))
)
在矩阵中我设置了这种数据安排:
我明白了:
请告诉我这是否可以帮助您。
答案 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)))