SSRS:在报告中汇总TimeSpan值

时间:2009-02-27 15:14:00

标签: reporting-services sum timespan

我有一个报告和一个数据源,其中一列是TimeSpan类型。当我使用Fields!TheTime.Value时,TimeSpan值似乎在报告中正确显示,没有问题。

  • 7点02分00秒
  • 五时41分00秒

但是我想对这些值进行求和来得到一个组的总时间。在C#中,我当然可以做一个TimeSpan +另一个TimeSpan,所以我知道它们可以添加。我试过了

=Sum(Fields!TheTime.Value)

但它最终会打印出很多种类型的东西。例如,对于上面输出的时间,我将得到457800000000作为总和。甚至应该是什么?

无论如何,我如何在报告中总结时间跨度值?对于上述时间跨度,我想以12:43:00作为总和。除非我的脑袋再一次在数学上失败了...但你明白了:p

3 个答案:

答案 0 :(得分:14)

叹息解决方案非常简单......为什么我不能在第一时间尝试过?哦,好吧......也许是因为我没有意识到我可以访问TimeSpan课......也许是因为我认为自己是盲目的......但无论如何,这里是:

=TimeSpan.FromTicks(Sum(Fields!TheTime.Value))

D'哦!

答案 1 :(得分:1)

@Svish - 我删除了我以前的帖子,因为我的答案很不确定,但我同意@pfunk。

我终于得到了SSRS备份并玩了一下,看起来你的大数字就是刻度数,所以看起来结果的格式化会对你有用。

有趣的是,我以前的错综复杂的答案是一个解决方法,用于汇总DateTime值(在我的查询中使用SQL Server DATETIME数据类型),这是你在SSRS(和SQL)中无法做到的,因为你无法对DATETIME求和。我将它再次包括在这里供将来参考,但我认为之前有点相切:)

下面的代码将DateTime字段转换为double,对结果求和,然后将其转换回DateTime并将其格式化为hh:mm:ss

=Date.FromOADate(Sum(Fields!TheTime.Value.ToOADate())).ToString("hh:mm:ss")

答案 2 :(得分:0)

可能发生的事情是当你显示Fields!TheTime.Value时,SSRS足够聪明,知道将其显示为DateTime类型字段

当您在其中添加总和时,它认为它是一个数字类型字段并将其显示为这样(即,它是在每个时间跨度字段中对“滴答”的数量求和)

尝试将求和值专门格式化为字段属性中的日期时间,它可能会正确显示

相关问题