我是MS SQL的新手,我很难获得正确的结果。我目前有一个表格,其中包含从三个不同的表格中选择的标题updateddate
(日期),addedby
(数字),operationid
(数字)和servicereqno
(数字)
operationid
是一个事件,servicereqno
是一个工作号码。我希望能够在事件之间获得时间差,然后一旦确定就计算平均值。
例如:
我的首要任务是确定时间差异,确保它在同一个工作号码内。
非常感谢
答案 0 :(得分:1)
为了获得事件之间的时间间隔,您需要按顺序对所有操作进行编号(一个增量而不是左图),然后将其连接到自身,偏移量为1.您将得到n-1行,结果为时间跨度。
这样的事情:
WITH cteOps AS (
SELECT ROW_NUMBER() OVER (PARTITION BY servicereqno ORDER BY updateddate) seqid, updateddate, servicereqno
FROM yourdatasource
)
SELECT DATEDIFF(millisecond, o1.updateddate, o2.updateddate) updateddatediff, servicereqno
FROM cteOps o1
JOIN cteOps o2 ON o1.seqid=o2.seqid+1 AND o1.servicereqno=o2.servicereqno;
当然,您可以对其进行聚合以获得平均值或任何您需要的值。
答案 1 :(得分:0)
SQL Server提供a built-in DATEDIFF function,您可以使用它来查找两个日期之间的差异。此外,SQL Server具有a built-in AVG function,您可以使用它来计算一组值的平均值。