Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reporting services 按年份分组时表中列之间的SSRS差异列_Reporting Services_Ssrs 2008 R2_Ssrs Tablix - Fatal编程技术网

Reporting services 按年份分组时表中列之间的SSRS差异列

Reporting services 按年份分组时表中列之间的SSRS差异列,reporting-services,ssrs-2008-r2,ssrs-tablix,Reporting Services,Ssrs 2008 R2,Ssrs Tablix,在我的查询中,我有一个年份字段,上面有列分组。我对产品组、产品部分和项目进行了行分组。如果某个部门今年没有销售额,而去年的销售额为214美元,那么我在该部门的差异栏中显示的是214美元,而不是214美元。请注意,没有销售额等于数据库中没有数据,因此今年的销售额在报告中为空值 这是我正在使用的表达式,但它不起作用: =IIF( ISNothing(Sum(IIF(Fields!Year.Value = MAX(Fields!Year.Value),

在我的查询中,我有一个年份字段,上面有列分组。我对产品组、产品部分和项目进行了行分组。如果某个部门今年没有销售额,而去年的销售额为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))
=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)))  
您在评论中提到,2015年的
储物柜
没有行,因此该组的最大年值为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
我在我的total列中使用了相同的表达式,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))
)
在矩阵中,我设置此数据排列:

我明白了:


让我知道这是否能帮到你。

我知道了。我用这个来表达:

Sum(IIF(Fields!Year.Value = Max(Fields!Year.Value),
             Fields!Subtotal.Value,
             -1 * Fields!Subtotal.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)))  
=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,-*Fields!Subtotal.Value)))

它是如何“不工作”的?执行此操作时,准确的预期行为和实际结果是什么?我添加了一个指向报告图像的链接。谢谢Jonnus。当前该单元格的格式是什么?您是从数据库返回null还是0(因为0是2015数据列中显示的数字)这是销售表达式:=IIF(ISNOTHING(Sum(Fields!Subtotal.Value))=TRUE,0,Sum(Fields!Subtotal.Value))tablix中只有一个数据集为报告提供信息。通过将作用域设置为该数据集,结果将是相同的。我也尝试过,但仍然不起作用(我必须更改您的字段!值返回字段!小计…您使用的是Visual Studio/SQL版本吗?我使用的是2008r2I。我确实创建了一个数据集,它复制了您的数据集,并使其正常工作。我只是不明白为什么它不能与我的数据一起工作。您是否在我的代码中获得相同的结果,或者您所说的“不工作”是什么意思我算出来了。我用它来表示。=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,-*Fields!Subtotal.Value)))