【发布时间】:2017-06-13 18:46:34
【问题描述】:
我有一个结构如下的表:
| ObjectID | ParentID | Description | Level |
----------------------------------------------------
| 1000 | NULL | Food | 0 |
| 1001 | 1000 | Fruit | 1 |
| 1002 | 1000 | Vegetable | 1 |
| 1003 | 1001 | Apple | 2 |
| 1004 | 1001 | Banana | 2 |
| 1005 | 1002 | Cabbage | 2 |
| 1006 | 1002 | Spinach | 2 |
| 1007 | 1003 | Red | 3 |
| 1008 | 1003 | Green | 3 |
| 1009 | 1007 | Single | 4 |
| 1010 | 1007 | Bunch | 4 |
| 1011 | 1010 | Organic | 5 |
| 1012 | 1010 | Non-Organic | 5 |
它基本上在一个表中列出了一堆具有层次结构的对象。
现在我需要能够查询该表并提出基于单个ObjectID 的层次结构。像这样:
在本例中,我需要获取“Apple”层次结构下的所有内容,以便结果集为:
| ObjectID | ParentID | Description | Level |
----------------------------------------------------
| 1003 | 1001 | Apple | 2 |
| 1007 | 1003 | Red | 3 |
| 1009 | 1007 | Single | 4 |
| 1010 | 1007 | Bunch | 4 |
| 1011 | 1010 | Organic | 5 |
| 1012 | 1010 | Non-Organic | 5 |
| 1008 | 1003 | Green | 3 |
请注意这是如何按级别对行进行排序的,其中直接子级排在父级之后。
非常感谢您的帮助!谢谢!
【问题讨论】:
-
这个问题没有显示任何研究工作。
-
这个副本向您展示了如何在结果中包含关卡:stackoverflow.com/questions/14274942/…
标签: sql sql-server tsql hierarchy sql-server-2016