【发布时间】:2016-09-16 10:19:38
【问题描述】:
我目前有一张类似的表-
RecordTime Running Fault
-----------------------------------------------
2016-09-15 11:32:01.00 0 202
2016-09-15 11:32:08.00 1 202
2016-09-15 11:39:31.00 0 21
2016-09-15 11:40:07.00 1 4
2016-09-15 11:42:11.00 0 21
2016-09-15 11:42:39.00 1 45
然后我想计算每条记录的 RecordTimes 之间的时间差。为此,我使用以下 -
WITH rows AS
(
SELECT *, ROW_NUMBER() OVER (ORDER BY RecordTime) AS rn
FROM dbo.Table1
)
SELECT DATEDIFF(second, mc.RecordTime, mp.RecordTime)
FROM rows mc
JOIN rows mp
ON mc.rn = mp.rn - 1
返回 -
(No column name)
----------------
7
443
36
124
28
303
不过,我真正想做的是在原始表中创建一个计算列,以提供这些值。这可能吗?
我认为我可以将查询转换为 UDF,然后在列中引用它,但我对这种工作不是很有经验。
---编辑---
最终结果应该是-
RecordTime Running Fault Diff
--------------------------------------------------------
2016-09-15 11:32:01.00 0 202 7
2016-09-15 11:32:08.00 1 202 443
2016-09-15 11:39:31.00 0 21 36
2016-09-15 11:40:07.00 1 4 124
2016-09-15 11:42:11.00 0 21 28
2016-09-15 11:42:39.00 1 45 303
【问题讨论】:
-
显示你的最终结果应该是..
-
您使用的是哪个版本的 SQL Server?
-
2012...对不起,应该说
-
它会影响性能,最好在运行中获得它
-
在飞行中?你是什么意思?另外,抱歉耽搁了,我正在处理答案...
标签: sql sql-server tsql sql-server-2012