如何访问计数以计算具有列和行组的SSRS矩阵中的差异

时间:2017-05-22 16:07:18

标签: reporting-services ssrs-tablix

我正在Visual Studio 2017(SSRS)中构建一个报告,它使用一个返回以下数据的存储过程:

$(document).ready(function(){
    $(".slidingDiv_a").hide();
    $(".show_hide_a").show();
    $(".slidingDiv_b").hide();
    $(".show_hide_b").show();

    $('.show_hide_a').click(function(){
       $(".slidingDiv_a").slideToggle();
    });

    $('.show_hide_b').click(function(){
        $(".slidingDiv_b").slideToggle();
    });
});

我需要获得每个状态,每年,每种类型的计数,所以我开始构建一个矩阵,STATUS作为第一列组,YEAR作为其子,然后,在行组中我只有TYPE。在数据字段中,我只有计数,所以它看起来像这样:

    PRODUCT_ID  TYPE    YEAR    STATUS
    15242       01      1516    ACTIVE
    54541       02      1617    ACTIVE
    64454       01      1516    INACTIVE
    73697       02      1516    INACTIVE
    98878       03      1617    ACTIVE

我的问题如下。我想添加一个DIFF列(下面的示例)来计算两年之间的差异,但问题是因为所有这些都是动态完成的,所以我不知道如何使用计数访问文本框来计算差异。我可以构建一个计算所有这些数字的存储过程,但这将是一个较慢的解决方案,因为字段TYPE将随着时间的推移而增长。

            ACTIVE      INACTIVE
            1516  1617  1516  1617  
    01      1     0     1     0     
    02      0     1     1     0 
    03      0     1     0     0 

任何帮助将不胜感激。提前谢谢你们。

2 个答案:

答案 0 :(得分:0)

我不认为您可以按照自己的方式制作矩阵,而不会使用会破坏性能的一堆LookUps。

我会制作一个常规表并过滤表达式中的数据以分隔年份。您必须根据您的数据找出一些逻辑,以确定哪一年是当前年份,哪一年是最后一年。

您将使用与现在相同的TYPE分组。

你已经确定了当前的当年:

=SUM(IIF(Fields!YEAR.Value = Parameter!Current_Year.Value, 1, 0)

对于DIFF列,请使用

=SUM(IIF(Fields!YEAR.Value = Parameter!Current_Year.Value, 1, 0) - SUM(IIF(Fields!YEAR.Value = Parameter!Previous_Year.Value, 1, 0)

您可以在查询中使用变量或字段来标识当前年份 - 它不需要是参数。

可以仍然使用状态(Stati?)的矩阵作为Active和Inactive。

答案 1 :(得分:0)

我找到了一种使用上一个函数来计算矩阵列之间差异的方法(可从SSRS 2008及更高版本获得)。看我对这个问题的回答。如何在ssrs矩阵中减去相邻列

how to subtract adjacent columns in an ssrs matrix