递归sql从对/关系表创建树结构
我们的帮助台软件在MS-SQL 2008中有一个表,用于跟踪网络中项目之间的关系 我正在尝试创建一个报告,一个树状视图,它可以在多个层次上显示我们网络中的哪些项目,某个项目是需要的 该表包含以下字段:递归sql从对/关系表创建树结构,sql,sql-server,recursion,common-table-expression,Sql,Sql Server,Recursion,Common Table Expression,我们的帮助台软件在MS-SQL 2008中有一个表,用于跟踪网络中项目之间的关系 我正在尝试创建一个报告,一个树状视图,它可以在多个层次上显示我们网络中的哪些项目,某个项目是需要的 该表包含以下字段: | pair_id | item_id | rel_type_id | |---------|-----------|--------------| | 1 | 1 | 27 | | 1 | 3 | 28
| pair_id | item_id | rel_type_id |
|---------|-----------|--------------|
| 1 | 1 | 27 |
| 1 | 3 | 28 |
| 2 | 1 | 27 |
| 2 | 2 | 28 |
| 3 | 2 | 27 |
| 3 | 4 | 28 |
| 4 | 2 | 27 |
| 4 | 5 | 28 |
其中rel_type_id为:
28 = depends on
27 = needed by
i、 e.Server01是App01所必需的,App01_web所必需的,最终的结果如下:
1 (Server01)
+--2 (App01)
+--4 (App01_web)
+--5 (App01_console)
+--3 (db01)
| parent_id | item_id | item_name | level |
|-----------|---------|---------------|-------|
| 1 | 2 | App01 | 0 |
| 1 | 3 | db01 | 0 |
| 2 | 4 | App01_web | 1 |
| 2 | 5 | App01_console | 1 |
等等
是否有一种递归解析(即CTE)以查找所有项的方法
取决于此表中的第1项(Server01)
想要的输出是一个如下所示的表:
1 (Server01)
+--2 (App01)
+--4 (App01_web)
+--5 (App01_console)
+--3 (db01)
| parent_id | item_id | item_name | level |
|-----------|---------|---------------|-------|
| 1 | 2 | App01 | 0 |
| 1 | 3 | db01 | 0 |
| 2 | 4 | App01_web | 1 |
| 2 | 5 | App01_console | 1 |
我在这里尝试了几个CTE示例,但我无法让它们在这个表中正常工作。我怀疑这是因为除了rel_type_id值之外,我在表中没有父/子关系。很遗憾,我无法更改该表。因此,根据您的输入数据,您希望输出是什么样的?另外,你能分享你到目前为止的尝试吗?添加了想要的输出到问题文本。