如何减去ssrs矩阵中的相邻列

问题描述 投票:1回答:2

我有一个ssrs矩阵,如下所示:

               Month(Columns)
   Product(Rows)  Sales(Data)

输出看起来像这样:

                       June  July  August  Sept  Oct  
          ABC          34     34     23     22    67
          DEF          33     21     32     22    14

我想要一个如下所示的输出:

                       June  July  June-July  Aug  July-Aug  Sept  Aug-Sept  Oct  Sept-Oct
              ABC        34   34      0        23     11      22      1       67     45
              DEF        33   21      12       32     11      22      10      14     8

我尝试过这样的事情:

                Month(Columns) Change
   Product(Rows)  Sales(Data)   Expression

表达式如下所示:

=Sum(IIF(Fields!MONTH.Value=Fields!MONTH.Value,Fields!Products.Value,Nothing))-
Sum(IIF(Fields!MONTH.Value=Fields!MONTH.Value - 1,Fields!Products.Value,Nothing))

但它不起作用。我想看看如上所示的输出。请告诉我。



嘿山姆,

使用您提到的解决方案:

我看到这样的输出:

                       June   Garbage    July  July-June  Aug  Aug-Jul  
              ABC        34     xx        34      0        23     11    
              DEF        33     xx        21      12       32     11    

有没有办法我们可以用垃圾值删除列?

嘿Sam,我试过你的代码。现在我的整个栏目都有一个很大的空白区域。有没有办法可以隐藏宽阔的空间?

sql-server reporting-services ssrs-2008 reportingservices-2005
2个回答
2
投票

如果您按月对列进行分组,则不需要使用SumIif

您可以使用=Sum(Fields!Products.Value)等表达式来获取该特定月份中所有产品的总和。如果要查看当前月份和上个月之间的差异,那么如果在月份列组中的单元格中输入以下表达式...

=Iif(Previous(Fields!MONTH.Value) = Nothing, 0, 
Sum(Fields!Products.Value) - Previous(Sum(Fields!Products.Value)))

您需要在此实例中进行空检查,因为第一个月将不会返回任何内容。

如果你有重叠的行和列行组(我相信你这样做),那么你将无法使用Previous,因为它不受支持:-(


我认为唯一的解决方案是使用一些自定义代码。

有一个链接here

Public Shared previous as Integer
Public Shared current as Integer
  Public Shared Function GetCurrent(Item as Integer) as Integer
     previous=current
     current=Item
     return current
  End Function

  Public Shared Function GetPrevious()
     return previous
  End Function

然后你的用法就像

=Code.GetCurrent(Sum(Fields!Products.Value)) - Code.GetPrevious()

0
投票

我找到了一种方法,通过添加列分组名称,使用“上一个”功能计算Matrix列之间的差异。

=Previous(Sum(Fields!AMOUNT.Value),"PeriodGroupName")

在这里查看更多细节。 http://www.tricks-and-tips.nl/tips-and-tricks/sql/ssrs/ssrs-matrix-compare-column-values和这里的文件。 https://docs.microsoft.com/en-us/previous-versions/sql/sql-server-2008-r2/ms156372(v=sql.105)

© www.soinside.com 2019 - 2024. All rights reserved.