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 server 2008 R2和SQL server 2008 能一起安装吗?为啥安装完只剩SQL server 2008 R2一个了?