SSRS 报表, 行转列后 列汇总数据不准确问题的分享
0
首先数据库里有一行数据,该行数据其中一列是 XML类型, 保存的数据类似以下结构:
现在要生成如下记录集,也就是一对多(2张截图其实是一张图,中间的列太多分开截屏了,合起来看 数据时从2月到6月 5条记录):
然后将此记录集,到SSRS进行 行转列:
当需要对数据进行总汇总的时候,问题出现了(F列 G列):
为什么地下的汇总会不正确呢? 它把所有的行都累加了一遍,当然这是不符合我们要求的。
因为我们行专列之前,其实只有一条记录,只是该条记录的xml列里有多个xml行。然后我们将xml行拉平,变成了5行。 然后到报表的时候,将该5行记录进行 行转列。 其实这5行是一条记录,因此只需要计算一次就行。
解决办法:
Dim AggregationCapacityBefore As Decimal = 0
Function AddValue(ByVal NewValue As Decimal, ByVal VarName As String) As Decimal
If VarName = "CapacityBefore" Then
AggregationCapacityBefore = AggregationCapacityBefore + NewValue
End If
Return NewValue
End Function
Function GetAggregation(ByVal VarName As String) As Object
If VarName = "CapacityBefore" Then
Return AggregationCapacityBefore
Else : Return 0
End If
End Function
普通行里用如下表达式:
=CODE.AddValue(MIN(Fields!CapacityBeforeMaintenance.Value), "CapacityBefore")
汇总行里用:
=CODE.GetAggregation("CapacityBefore")
结论:
其实办法很简单,就是用一个变量暂时保存该列的所有行的汇总值,不是所有行。
然后在总的行里把该值取出来。
不得不吐槽, 微软报表弱的一塌糊涂。
现在要生成如下记录集,也就是一对多(2张截图其实是一张图,中间的列太多分开截屏了,合起来看 数据时从2月到6月 5条记录):
然后将此记录集,到SSRS进行 行转列:
当需要对数据进行总汇总的时候,问题出现了(F列 G列):
为什么地下的汇总会不正确呢? 它把所有的行都累加了一遍,当然这是不符合我们要求的。
因为我们行专列之前,其实只有一条记录,只是该条记录的xml列里有多个xml行。然后我们将xml行拉平,变成了5行。 然后到报表的时候,将该5行记录进行 行转列。 其实这5行是一条记录,因此只需要计算一次就行。
解决办法:
- 如果是 SSRS2008R2以上(RDLC不支持),请使用如下表达式在最下面汇总的Cell里:
- 如果你是RDLC或者2008R2以下,请使用如下方式:
Dim AggregationCapacityBefore As Decimal = 0
Function AddValue(ByVal NewValue As Decimal, ByVal VarName As String) As Decimal
If VarName = "CapacityBefore" Then
AggregationCapacityBefore = AggregationCapacityBefore + NewValue
End If
Return NewValue
End Function
Function GetAggregation(ByVal VarName As String) As Object
If VarName = "CapacityBefore" Then
Return AggregationCapacityBefore
Else : Return 0
End If
End Function
普通行里用如下表达式:
=CODE.AddValue(MIN(Fields!CapacityBeforeMaintenance.Value), "CapacityBefore")
汇总行里用:
=CODE.GetAggregation("CapacityBefore")
结论:
其实办法很简单,就是用一个变量暂时保存该列的所有行的汇总值,不是所有行。
然后在总的行里把该值取出来。
不得不吐槽, 微软报表弱的一塌糊涂。
没有找到相关结果
重要提示:提问者不能发表回复,可以通过评论与回答者沟通,沟通后可以通过编辑功能完善问题描述,以便后续其他人能够更容易理解问题.
2 个回复
梁勇 - 天道酬勤、上善若水。爱好商业智能 2014-06-30 回答
赞同来自:
天桥下的郑成功 - Hadoop大数据开发工程师、数仓架构师、熟悉数据仓库设计、Hadoop、Spark、HBase、Hive、SSIS等开发 2014-07-01 回答
赞同来自:
没有这个功能吗?