SQL Server 2008 R2 / s-s-rS 2008:服务水平报告创建

Posted

技术标签:

【中文标题】SQL Server 2008 R2 / s-s-rS 2008:服务水平报告创建【英文标题】:SQL Server 2008 R2 / s-s-rS 2008: Service Level Report Creation 【发布时间】:2013-03-28 18:13:31 【问题描述】:

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

    通话开始 [时间] 通话进度 [时间] 通话进度 [时间] 保持 [时间] 通话进度 [时间] 保持 [时间] 通话进度 [时间] 通话结束 [时间]

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

注意事项:

可能会或可能不会暂停, 可能会或可能不会多次保留, 可以背靠背放置两个保持。

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

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

【问题讨论】:

你能把你的 SQL 数据结构贴出来吗? 为了便于响应和保持解决方案简单,假设这些值并排存储在一个表中。 IE。第 1 行 [GUID] [Call Entered],[8:00 am] 第 2 行 [GUID] [Call Progress],[8:01 am] 其中时间是通话中下一个事件的开始时间。 【参考方案1】:

如果您尝试获取计算列,这听起来更像是 SQL 问题而不是 s-s-rS 问题。我的问题是从您的结构来看,这些点是 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

【讨论】:

以上是关于SQL Server 2008 R2 / s-s-rS 2008:服务水平报告创建的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server2008和SQL Server2008R2的区别,高手速进

SQL Server 2008 R2 Express三个版本有啥区别?

sql server2008升级到2008 R2出现问题

数据库SQL server 2008 R2和SQL server 2008 能一起安装吗?为啥安装完只剩SQL server 2008 R2一个了?

windows server2012 r2能安装sqlserver2008 R2吗

sql server 2008 r2 密钥