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 在Microsoft Reporting Services中创建计算行的总和_Reporting Services_Sum - Fatal编程技术网

Reporting services 在Microsoft Reporting Services中创建计算行的总和

Reporting services 在Microsoft Reporting Services中创建计算行的总和,reporting-services,sum,Reporting Services,Sum,这看起来应该很简单,但我还找不到任何东西。在Reporting Services中,我有一个最多6行的表,其中所有行都有计算值和动态可见性。我想把这些行加起来。基本上,我有一些发票项目,想做一个总数。我不能在数据库端更改任何内容,因为我的存储过程在系统中的其他地方使用。每一行也从不同的数据集中提取数据,所以我不能对数据集求和。我可以用表尾对所有行求和吗?类似于在Excel中合计多行?将每一行的可见性表达式放入页脚行以计算总和似乎非常多余。有几种方法可以实现这一点: 1。在SQL中进行计算并对该字

这看起来应该很简单,但我还找不到任何东西。在Reporting Services中,我有一个最多6行的表,其中所有行都有计算值和动态可见性。我想把这些行加起来。基本上,我有一些发票项目,想做一个总数。我不能在数据库端更改任何内容,因为我的存储过程在系统中的其他地方使用。每一行也从不同的数据集中提取数据,所以我不能对数据集求和。我可以用表尾对所有行求和吗?类似于在Excel中合计多行?将每一行的可见性表达式放入页脚行以计算总和似乎非常多余。

有几种方法可以实现这一点:

1。在SQL中进行计算并对该字段求和,如下所示:

SELECT Quantity, Amount, Quantity * Amount As TotalAmount FROM MyTable
然后只需使用详细信息行中的TotalAmount字段,并在页脚中求和即可

2.创建第二个数据集,用于计算总数,并在页脚中使用该数据集,而不是总和:

=Sum(Fields!TotalAmount.Value, "MyTotalingDataset")
3.使用自定义代码进行操作。在布局空间上单击鼠标右键,选择“属性”,然后单击“代码”选项卡。输入以下代码:

Public Dim TotalAmount As Double = 0

Public Function CalculateRowTotal(ThisValue As Double, ThatValue As Double) As Double
    TotalAmount = TotalAmount + (ThisValue * ThatValue)
    Return ThisValue * ThatValue
End Function
在“详细信息”标注栏上,使字段求和的列具有以下表达式:

=Code.CalculateRowTotal(Fields!Quantity.Value, Fields!Amount.Value)
=Code.TotalAmount
这将执行上面的代码并进行计算,同时计算过程中的总和

页脚标注栏显示总计,因此列具有以下表达式:

=Code.CalculateRowTotal(Fields!Quantity.Value, Fields!Amount.Value)
=Code.TotalAmount

你完成了。只是要小心,因为您不能保证代码的执行顺序,对于某些报告,它将首先执行页脚(例如,如果使用细节栏中的行之和),这将使总数为零,因为细节栏计算尚未发生,但对于一般情况,这应该是可行的

您可以按如下方式更改数据库

您是否知道可以在SQL中获得聚合结果,而无需聚合数据

只需向数据集添加一个额外的列,如下所示: ,将(按SalesOrderID划分的)上的(OrderQty)和作为“总计”

在上述示例中: OrderQty是您希望求和的值 SalerOrderID相当于“GROUP BY”

您可以使用计数、平均值等相同的技术

更多信息请点击此处

如果您对执行顺序有问题,请在表格下方添加一个文本框,并在该框中显示TotalAmount。

谢谢您通知我,我不能保证代码执行的顺序,这更能解释为什么行求和更复杂。您能说得具体一点吗-1表示绝对模糊