我坚持目前的任务,并且不知道我将如何在这个特定情况下创建脚本。
我想要的是计算其中“等待”值的记录之间的持续时间。基本上计算它处于“等待”状态的时间。
现在状态可以一直改变,所以我只需要总计这些特定“等待”状态之间的持续时间。 (创建时间以蓝色突出显示)
我没有包含任何SQL脚本,因为数据是保密的,下面实际上是我创建的初始脚本的结果。
更难的是我需要为每张票计算它,所以下面的例子仅适用于ticket1。其他票号有“等待”的持续时间#。
我正在考虑创建一个临时表并分配一个标志来标识这些状态,然后循环访问特定故障单的每个结果集,然后将其存储在另一个结果表中。
如果您有任何我可以使用的建议或SQL功能,那就太棒了。非常感谢提前!
答案 0 :(得分:1)
我设法提出以下解决方案。基本思想是自己加入你的表,使得对应于Waiting for
组的两个记录汇集在一起。然后,我们只考虑两者之间的创作时间差异。
WITH cte AS (
SELECT t1.Ticket, t1.[Create Time] AS wait_start, t2.[Create Time] AS wait_end,
ROW_NUMBER() OVER (PARTITION BY t1.[Create Time] ORDER BY t2.[Create Time]) rn
FROM yourTable t1
INNER JOIN yourTable t2
ON t1.Ticket = t2.Ticket AND
t1.[New Value] = 'Waiting for' AND
t2.[Old Value] = 'Waiting for' AND
t1.[Create Time] < t2.[Create Time]
)
SELECT
Ticket,
wait_start,
wait_end,
DATEDIFF(day, wait_start, wait_end) wait_in_days
FROM cte
WHERE rn=1
ORDER BY wait_start;