0

我刚刚开始学习 SSRS,并且只是在 SQL Server 中级,我正在尝试在 SSRS 中创建一个报告,以计算以下场景下的总时间:

  1. 通话开始 [时间]
  2. 通话进度 [时间]
  3. 通话进度 [时间]
  4. 坚持[时间]
  5. 通话进度 [时间]
  6. 坚持[时间]
  7. 通话进度 [时间]
  8. 通话结束[时间]

我试图获得的数据:第 8 步 - 第 1 步 - (第 5 步 - 第 4 步) - (第 7 步减去第 6 步),这样我就可以得到一个服务级别报告调用所花费的原始时间。

要记住的事情:

  • 可能是也可能不是持有,
  • 可能会或可能不会多次持有,
  • 可以背靠背放置两个保持。

如果我在 Visual Basic 中执行此操作,我将使用一个数组并循环遍历它来获取我的变量。不知道如何执行此操作,或者是否可以在 SSRS 或 SQL Server 2008 R2 中执行此操作。

帮助?(如果您需要更多信息,我很乐意提供)

4

1 回答 1

0

如果您尝试获取计算列,这听起来更像是 SQL 问题而不是 SSRS 问题。我的问题是来自您的结构,这些点是 SQL 还是行中的独立列?如果它们是列,那就容易多了。

看来您只是从结束时间中删除了开始时间,然后是持续时间的一些任意数字。为了执行 SQL 操作,我将给出一个在 SQL Management Studio 中自我提取的示例:

declare @Time1 time = '15:00', @Time2 time = '16:42', @DurationMinutes int = 34;

select 
    @Time1 as Time1
,   @Time2 as Time2

-- datediff gives you differences in an incremenet you specify between two values of date, time, or datetime
,   datediff(hour, @Time1, @Time2) as DifferenceInHours
,   datediff(second, @Time1, @Time2) as DifferenceInSeconds
,   datediff(minute, @Time1, @Time2) as DifferenceInMinutes

-- Dateadd can add or subtract an increment type and value from a point specified.  Be careful if you use ONLY TIME that you may go back a day and not notice it
,   dateadd(minute, - @DurationMinutes, @Time1) as Time


,   datediff(minute, @Time1, @Time2) - @DurationMinutes as TimeInMinutesLessDurationOfArbitraryTalkTime
于 2013-03-28T21:20:29.460 回答