【发布时间】:2012-12-15 20:47:51
【问题描述】:
我有两个临时表,它们为我提供了应用程序的特定作业运行时间。我想报告每个月的平均工作时间。然后注意差异。
第一个构建临时表的查询将输出第一个月的平均工作时间,第二个临时表包含第二个月的平均工作时间。
我想比较每个工作的百分比差异,衡量第二个月与第一个月之间的差异。
以下是构建两个临时表的示例查询:
--二月份工作时间的临时表
CREATE TABLE #JobTimings_FEB(jobtime int, PRCSINSTANCE int ,
PRCSNAME char (30), PRCSTYPE char (30), RUNSTATUS char (30),
OPRID char (30), RUNCNTLID char (30), BEGINDTTM char (30) ,
ENDDTTM char (30))--, #Executions char (10))
;
INSERT INTO #JobTimings_NEWSERV (jobtime, PRCSINSTANCE,
PRCSNAME , PRCSTYPE, RUNSTATUS, OPRID, RUNCNTLID, BEGINDTTM, ENDDTTM)
SELECT DATEDIFF(ss,BEGINDTTM,ENDDTTM) AS jobtime,
PRCSINSTANCE, PRCSNAME, PRCSTYPE, RUNSTATUS, OPRID,
RUNCNTLID, BEGINDTTM, ENDDTTM
FROM PSPRCSRQST WHERE BEGINDTTM BETWEEN '2012-02-01 00:00:00.000'
AND '2012-02-28 23:59:09.837'
ORDER BY BEGINDTTM
--一月份工作时间的临时表
CREATE TABLE #JobTimings_JAN(jobtime int, PRCSINSTANCE int ,
PRCSNAME char (30), PRCSTYPE char (30), RUNSTATUS char (30),
OPRID char (30), RUNCNTLID char (30), BEGINDTTM char (30) ,
ENDDTTM char (30))--, #Executions char (10))
;
INSERT INTO #JobTimings_OLDSERV (jobtime, PRCSINSTANCE,
PRCSNAME , PRCSTYPE, RUNSTATUS, OPRID, RUNCNTLID, BEGINDTTM, ENDDTTM)
SELECT DATEDIFF(ss,BEGINDTTM,ENDDTTM) AS jobtime,
PRCSINSTANCE, PRCSNAME, PRCSTYPE, RUNSTATUS, OPRID,
RUNCNTLID, BEGINDTTM, ENDDTTM
FROM PSPRCSRQST WHERE BEGINDTTM BETWEEN '2011-12-04 00:00:00.000'
AND '2011-12-17 23:59:09.837'
ORDER BY BEGINDTTM
如上所述,我想在查询中找到两个月之间每个工作的百分比差异。
【问题讨论】:
-
你看过 LEAD 和 LAG 函数吗?
-
您使用的是什么版本的 SQL Server?它可能会影响答案。
-
尚未使用 LEAD 或 LAG 函数。使用 sql 2000 服务器
-
LEAD 和 LAG 是 SQL 2012 的新功能,在 2000 年不可用
标签: sql sql-server tsql sql-server-2000