SSRS: суммирование значений TimeSpan в отчете - PullRequest
8 голосов
/ 27 февраля 2009

У меня есть отчет и источник данных, в котором один из столбцов имеет тип TimeSpan. Значение TimeSpan отображается правильно в отчете, когда я использую Fields!TheTime.Value, проблем нет.

  • 07: 02: 00
  • 05: 41: 00

Но я хотел бы сделать сумму для этих значений, чтобы получить общее время группы. В C # и так далее я, конечно, могу сделать TimeSpan + другой TimeSpan, поэтому я знаю, что они могут быть добавлены. Я пытался

=Sum(Fields!TheTime.Value)

Но в итоге получается распечатка длинного числа. Например, для приведенных выше значений я бы получил 457800000000 в качестве суммы. И что это вообще должно быть?

В любом случае, как мне суммировать значения временного интервала в отчете? Для приведенных выше временных интервалов я хотел бы в итоге получить сумму 12:43:00. Если только моя голова снова не подвела меня к математике ... но вы поняли: p

Ответы [ 3 ]

14 голосов
/ 02 марта 2009

вздох Решение досадно простое ... Почему я не мог просто попробовать это в первую очередь? Ну да ладно ... может быть, потому что я не осознавал, что у меня есть доступ к TimeSpan классу ... возможно, потому что я считал себя слепым ... Но в любом случае, вот оно:

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

D'ой!

1 голос
/ 27 февраля 2009

@ Svish - я удалил свой предыдущий пост, потому что у меня была неуверенность в моем ответе, но я согласен с @pfunk.

Я наконец-то восстановил SSRS и поиграл, и, конечно, похоже, что ваше большое число - это число тактов, так что, похоже, немного форматирования результата подойдет вам.

Интересно, что мой предыдущий запутанный ответ был обходным путем для суммирования значений DateTime (с использованием типа данных SQL Server DATETIME в моем запросе), которые вы не можете сделать в SSRS (и SQL), потому что вы не можете суммировать DATETIME. Я включу его сюда снова для дальнейшего использования, но я думаю, что раньше он был немного касательным:)

Приведенный ниже код преобразует поле DateTime в двойное число, суммирует результат, а затем преобразует его обратно в DateTime и форматирует его в формате чч: мм: сс

=Date.FromOADate(Sum(Fields!TheTime.Value.ToOADate())).ToString("hh:mm:ss")
0 голосов
/ 27 февраля 2009

Вероятно, происходит то, что при отображении полей! TheTime.Value SSRS достаточно умен, чтобы знать, что отображать это как поле типа DateTime

когда вы добавляете туда сумму, она думает, что это числовое поле типа, и отображает ее как таковую (т. Е. Суммирует количество тиков в каждом поле временного интервала)

попробуйте отформатировать суммированное значение как дату и время в свойствах поля, и оно, вероятно, будет отображаться правильно

...