如何在SQL中选择层次结构关系的顶层?

问题描述 投票:0回答:1

我有一个需要运行的例程的列表,还有一个表,用于定义一个例程是否依赖于其他例程的成功完成。因此,例如:

| RoutineID | DependentRoutineID |
| --------- | ------------------ |
|     1     |         NULL       |
|     2     |          1         |
|     3     |          2         |
|     4     |          3         |
|     5     |          3         |
|     6     |          4         |
|     7     |          5         |
|     8     |         NULL       |
|     9     |          8         |
|     10    |          9         |

由于依赖关系的层次性质,所有例程> = 2和<= 7都取决于例程1的最高级别。我想在对每个RoutineID返回“最高” DependentRoutineID的查询中反映出来] >

| RoutineID | DependentRoutineID |
| --------- | ------------------ |
|     1     |         NULL       |
|     2     |          1         |
|     3     |          1         |
|     4     |          1         |
|     5     |          1         |
|     6     |          1         |
|     7     |          1         |
|     8     |         NULL       |
|     9     |          8         |
|     10    |          8         |

我一直在尝试使用递归CTE来执行此操作,但效果不理想。我如何影响该查询?

我有一个需要运行的例程的列表,还有一个表,用于定义一个例程是否依赖于其他例程的成功完成。因此,例如: RoutineID | ...

sql sql-server tsql recursion recursive-query
1个回答
0
投票

在递归CTE下尝试此操作

© www.soinside.com 2019 - 2024. All rights reserved.