我正在尝试在报表指示器中使用Previous()函数来显示向上或向下箭头,具体取决于去年是否有增加或减少。当数据以升序显示时,此方法正常工作,但当按升序显示Previous()函数不再有效时,它只将顶行视为最旧的一行。我已经创建了一个自定义code.PercentDifference(Num,PrevNum)来获取差异。为了说明,这是SSRS中的表,Year Change是使用表达式的计算列:
Financial Year Value (Year Change)
Apr 2007 - Mar 2008 30,000 0
Apr 2008 - Mar 2009 37,000 7,000
Apr 2009 - Mar 2010 42,000 5,000
Apr 2010 - Mar 2011 38,000 (4,000)
这样可行,因为第2行'看到'当前 - 上一个为37000-30000。但是,当按日期降序显示时,我得到了这个:
Financial Year Value (Year Change)
Apr 2010 - Mar 2011 38,000 0
Apr 2009 - Mar 2010 42,000 4,000
Apr 2008 - Mar 2009 37,000 (5,000)
Apr 2007 - Mar 2008 30,000 (7,000)
因为第2行将Current-Previous视为42000-38000,而第1行没有第2行的概念?!
它需要看起来像这样:
Financial Year Value (Year Change)
Apr 2010 - Mar 2011 38,000 (4,000)
Apr 2009 - Mar 2010 42,000 (5,000)
Apr 2008 - Mar 2009 37,000 7,000
Apr 2007 - Mar 2008 30,000 0
我认为我不能在原始数据集查询中执行此操作,因为这只会针对各个日期提取大量值,然后将一些计算列作为例如计算财务年度,月份等。上表是按年度分组的报告金额。
我有什么想法可以产生这个?
非常感谢,
答案 0 :(得分:1)
我之前以“反向”的方式使用过:
在我的例子中,我使用了上一个函数用于period和valuesale数据,以及以前数据的正常值。
我也隐藏了第一行(没有显示的意思),并在页脚显示最后一个句号
要控制第一行的可见性,请使用:=Previous(Fields!fiscalmonth.Value) is Nothing
答案 1 :(得分:0)
当您按降序按日期排序时,似乎而不是之前的值,您需要下一个值。 与Crystal不同,SSRS不提供任何下一个功能。
您可以尝试创建一个查询参数,该参数取字段“Value”的值并编写如下表达式:
参数!Value.Value((RowNumber(nothing)) - 参数!Value.Value((RowNumber(nothing)+1)
主要思想是你可以将值作为索引数组获取,例如参数!Value.Value(i)将为你提供“值”字段的第i条记录。
并且您需要函数RowNumber来获取行的运行计数。