Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.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 比较两个动态创建的矩阵列以获得差异_Reporting Services_Ssrs 2012_Reportbuilder3.0 - Fatal编程技术网

Reporting services 比较两个动态创建的矩阵列以获得差异

Reporting services 比较两个动态创建的矩阵列以获得差异,reporting-services,ssrs-2012,reportbuilder3.0,Reporting Services,Ssrs 2012,Reportbuilder3.0,我建立了一个矩阵,其中有一个行组“company”,一个列组“Year”,以及一个值字段,该值字段是全年的费用总和,称为revenue。列组最终将有2个通过用户输入提供的列。最终结果是一个矩阵,它看起来像这样: Year 1 | Year 2 Company: $500 $250 Company2: $750 $250 我想做的是在矩阵中添加一列,计算从第1年到第2年的变化。是否有一种方法可以在矩阵中执行此操作,例如添加一个新列,并使用一个表达式来比较行

我建立了一个矩阵,其中有一个行组“company”,一个列组“Year”,以及一个值字段,该值字段是全年的费用总和,称为revenue。列组最终将有2个通过用户输入提供的列。最终结果是一个矩阵,它看起来像这样:

         Year 1 | Year 2
Company:    $500    $250
Company2:   $750    $250
我想做的是在矩阵中添加一列,计算从第1年到第2年的变化。是否有一种方法可以在矩阵中执行此操作,例如添加一个新列,并使用一个表达式来比较行中的两个条目,或者我是否需要操作SQL代码来创建一个在代码中执行此操作的列?为此,如果我需要这样做,这里是数据集代码的视图:

SELECT
 company.cmp_id
,company.Company
,ChargeDetails.[Bill To ID]
,ChargeDetails.[Delivery Year]
,ChargeDetails.Revenue
FROM
ChargeDetails
LEFT OUTER JOIN company
ON ChargeDetails.[Bill To ID] = company.cmp_id
WHERE
ChargeDetails.[Delivery Year] = @DeliveryYear 
OR 
ChargeDetails.[Delivery Year] = @ComparisonYear2
ORDER BY ChargeDetails.[Delivery Year] DESC,ChargeDetails.Revenue DESC;`

尝试在标题类型
Change
中的年份组之外添加一列,或者在下面的单元格中添加您想要添加的内容,使用以下表达式:

=Sum(iif(Max(Fields!DeliveryYear.Value)=Fields!DeliveryYear.Value,Fields!Revenue.Value,0))-
Sum(iif(Min(Fields!DeliveryYear.Value)=Fields!DeliveryYear.Value,Fields!Revenue.Value,0))
注:我将min年(1)收入总额减去max 第(2)年收入总额

在您的示例中,它将产生:

+-----------+--------+--------+--------+
| Company   | Year 1 | Year 2 | Change |
+-----------+--------+--------+--------+
| Company A | 500    | 250    | -250   |
+-----------+--------+--------+--------+
您可以通过多种方式定义更改,可能是百分比或任何其他度量,这只是一个示例,了解上述表达式的作用,以便计算所需的度量


编辑1:

使用此数据排列添加矩阵

该矩阵在预览中如下所示:

确保您在DeliveryYear组之外添加了更改列,如上图所示。还要检查表达式中与您对应的字段名称

编辑2:

如果收入为空值,您可以尝试以下方法:

尝试使用T-SQL
ISNULL()
函数替换查询级别的空值,在这一部分中更改您的查询,如下所示

,ISNULL(ChargeDetails.Revenue,0)
但是,如果DeliveryYear具有空值,您可能希望忽略该记录,因此请尝试在where子句中排除它


如果您需要进一步的帮助,请告诉我。

我最后在“更改”列中使用了以下表达式

=sum(iif(Fields!Delivery_Year.Value=Parameters!DeliveryYear.Value,1,0)*Fields!Revenue.Value) -  sum(iif(Fields!Delivery_Year.Value=Parameters!ComparisonYear2.Value,1,0)* Fields!Revenue.Value)

谢谢你的帮助我基本上想衡量的是我们做生意的公司从第一年到第二年的销售额差异,当使用你的代码时,我在更改栏中得到了一个错误你好,我已经做了你建议的所有更改,我的矩阵设置与你完全一样,但是我得到了一个错误@alejandro zuleta@alejandro zuletaAre您确定更改栏不在交付年份组内吗?选择矩阵中的任何单元格,然后在设计时添加矩阵的图像。检查我的答案编辑的第一张图片,你可以看到组单元格分割(灰色和黄色线条)。链接显示矩阵,并且在年外有更改列。谢谢你在这方面的帮助。