如何按值命名父元素的子元素? SQL服务器

时间:2017-12-14 08:07:46

标签: sql binary-tree hierarchy

请告诉我一个如何将所有子节点标记为父ID的示例。只需要标记父级值为"need"的分支(参见示例图像)。使用递归查询,无法重命名特定父级的所有子级...

初始数据:

+-----+----------+----------+
| id  | parentid | selector |
+-----+----------+----------+
|  1  |          |          |
|  2  | 1        |          |
|  3  | 1        | need     |
|  4  | 2        |          |
|  5  | 2        | need     |
|  6  | 3        |          |
|  7  | 5        |          |
|  8  | 5        |          |
|  9  | 6        |          |
+-----+----------+----------+

需要数据:

+-----+----------+----------+----------------+
| id  | parentid | selector | parentSelector |
+-----+----------+----------+----------------+
|  1  | null     |          | null           |
|  2  | 1        |          | null           |
|  3  | 1        | need     | 3              |
|  4  | 2        |          | null           |
|  5  | 2        | need     | 5              |
|  6  | 3        |          | 3              |
|  7  | 5        |          | 5              |
|  8  | 5        |          | 5              |
|  9  | 6        |          | 3              |
+-----+----------+----------+----------------+

任务是通过父元素值为"need"的元素进行分组。我想,我应该创建一个带有标记的列,如上表中的示例,还是有其他选项?

我使用SQL Server 2012

Example

1 个答案:

答案 0 :(得分:1)

我不知道它是否适用于Sql server 2012,但我发现这个microsoft,我认为是你想要的,为了使parentSelector具有条件,我使用CASE(Transact-SQL)。 / p>

这是另一个例子:stackoverflow question