【问题标题】:SSRS Average Time in Minutes and then Format to HH MMSSRS 以分钟为单位的平均时间,然后格式化为 HH MM
【发布时间】:2015-06-19 18:28:39
【问题描述】:

我看到很多关于 SSRS 平均时间的问题,但我对此很陌生,这些问题都没有解决我的具体需求,因此我们将不胜感激。

我有一个持续时间字段 (Fields!Duration1.Value),它以分钟为单位提取持续时间(例如:170)。在我的存储过程中,我将其转换为 HH MM,如下所示:

CONVERT(VARCHAR(5),DATEADD(minute, test.Duration,0) ,114) AS Duration1

这就像一个魅力,我在我的 SSRS 报告中使用它。不幸的是,我还需要获得平均持续时间。因此,我在存储过程中将原始字段 test.Duration 作为额外的 SELECT 投入。该报告设置为矩阵,因此它是我希望显示平均值的“总”行。

所以我很确定我需要先:

=Avg(Fields!test.Duration.Value)

哪个有效(但有一个荒谬的十进制值),但是我如何将该值格式化回 HH:MM?我确信我可以在我的存储过程中做到这一点,但我也不肯定如何在那里做到这一点,所以基本上:欢迎任何和所有帮助!

谢谢

【问题讨论】:

  • 您希望如何显示小数分钟?你会有这些平均水平。还是您只想丢弃或舍入分数?

标签: sql stored-procedures reporting-services formatting


【解决方案1】:

您可以将自己的格式化函数添加到报告代码部分:

Public Function MinsToHHMM (ByVal Minutes As Decimal)
  Dim HourString = Floor(Minutes/60).ToString() 
  Dim MinString = Floor(Minutes Mod 60).ToString()
  Return HourString.PadLeft(2, "0") & ":" & MinString.PadLeft(2, "0")
End Function 

然后像这样在单元格表达式中调用它:

=Code.MinsToHHMM(Avg(Fields!test.Duration.Value))

【讨论】:

  • 这就像一个魅力。复制/粘贴并验证它是否正确地拉入了所有内容。我不知道报告代码部分感谢您引起我的注意!这将在未来大有帮助。
猜你喜欢
  • 2012-10-30
  • 1970-01-01
  • 2017-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多