Law*_*udo 0 sql t-sql sql-server
我正在做的概念是对从较高级别到较低级别的总等待时间求和。并获得该特定实体的总等待时间。下面是层次结构级别的图片:
我的最终输出应该是这样的。
本例解释了总等待时间。总等待时间:
一 = 1
乙 = 1 + 2 = 3
C = 1 + 3 = 4
D = 1 + 2 + 4 = 7
E = 1 + 2 + 5 = 8
F = 1 + 3 + 6 = 10
G = 1 + 3 + 7 = 10
我有一个想法,将表格与自己连接起来,但不知何故它不起作用,但不知何故它没有显示预期的结果。有一个更好的方法吗?谢谢!:(
您可以使用recursive cte
如下所示:
WITH cte AS (
SELECT *, waitingTime AS TotalWaitingTime
FROM waitingTime
UNION ALL
SELECT w.*, TotalWaitingTime + w.waitingTime
FROM waitingTime w
JOIN cte ON w.ParentObject = cte.Object
)
SELECT
object,
ParentObject,
waitingTime,
MAX(TotalWaitingTime) TotalWaitingTime
FROM cte
GROUP BY object,ParentObject,waitingTime
GO
Run Code Online (Sandbox Code Playgroud)
目的 | 父对象 | 等待的时间 | 总等待时间 |
---|---|---|---|
一种 | 1 | 1 | |
乙 | 一种 | 2 | 3 |
C | 一种 | 3 | 4 |
D | 乙 | 4 | 7 |
乙 | 乙 | 5 | 8 |
F | C | 6 | 10 |
G | C | 7 | 11 |
db<>在这里摆弄