s-s-rS 如何将列与组中的第一列进行比较
Posted
技术标签:
【中文标题】s-s-rS 如何将列与组中的第一列进行比较【英文标题】:s-s-rS How to Compare Columns to First Column in Group 【发布时间】:2013-10-18 23:29:41 【问题描述】:我正在尝试创建看起来应该很简单的矩阵报告,我希望有人能提供帮助。我有返回销售区域、日期和销售额的数据集。要求是将不同时间段的销售额与当前日期进行比较。我想让我的矩阵看起来像这样:
CurrentSales Date2Sales CurrentVSDate2 Date3Sales CurrentVSDate3
1 1000 1500 -500 800 200 2 1200 1000 200 900 300 3 1500 1100 400 1400 100
我可以得到从一列到下一列的差异,但我需要所有列都引用 CurrentSales 列。任何帮助将不胜感激。
目前我的数据集正在提取日期、地区、产品和销售额。然后我有三个参数,CurrentDate、PreviousMonth、PreviousQuarter。地区和产品是我的行组,日期是列组。接下来,我使用以下表达式在组内添加了一个列:=Sum(Fields!SalesAmount.Value)-Previous(Sum(Fields!SalesAmount.Value),"BookingDate").
我知道这是不正确的,因为它将值与列组中的前一个日期进行比较,并且我需要与列中的第一个日期进行比较组。
【问题讨论】:
你能告诉我们你目前的结构是什么,你尝试过什么,分享一下表达方式等吗? 我更新了问题,包括更多细节。谢谢。 【参考方案1】:例子:
您可以使用表达式:
=iif(Sum(Fields!SalesAmount.Value)= Previous(Sum(Fields!Date2Sales.Value)),
=iif(Sum(Fields!EndBalance.Value)=0, Nothing, Sum(Fields!EndBalance.Value)) 也可以使用 Switch。
【讨论】:
我不太关注这个。 EndBalance 的数据集中没有字段。仅包含每个日期记录的 SalesAmount。【参考方案2】:获得此结果的最简单方法可能是在您的查询中。向返回的每一行添加一个字段,可能称为“当前销售额”。在那里使用相关子查询来获得正确的比较值。那么您的比较可以像=Fields!Sales.Value - Fields!CurrentSales.Value
或类似的一样简单。
在报告级别有一些方法可以做到这一点,但它们更麻烦:我目前最喜欢的是使用嵌入在报告中的自定义代码。另一种方法是使用聚合的聚合。
【讨论】:
如果我的查询中有聚合值,这仍然有效吗?以上是关于s-s-rS 如何将列与组中的第一列进行比较的主要内容,如果未能解决你的问题,请参考以下文章
将第一个文件的第一列与第二个文件中的行匹配,然后将第二个文件中匹配行的最后一列插入第一个文件中的新第一列