如何在SQL数据库中创建层次结构?

问题描述

我有一个包含以下列的表格:

enter image description here

我需要根据级别数和层次结构创建更多列。

例如:

Level 1
Architecture ->Level 2
             ->Asses Inventory ->level 3
                              ->Program

如果最多三个级别,我需要创建三列。我已经在PowerBI中实现了这一目标。

enter image description here

如何在SQL中实现相同的目的? 任何帮助表示赞赏。谢谢

解决方法

在T-SQL中,我只是将表多次连接到自身

根据需要创建一个新表,如下所示:

   INSERT INTO NEW_TABLE
(LEVEL1,LEVEL2,LEVEL3)
SELECT
a.name,b.name,c.name
FROM TABLE1 a
LEFT OUTER JOIN TABLE1 b
ON a.category_id = b.parent_id
LEFT OUTER JOIN TABLE1 c
on b.category_id = c.parent_id
GO

那应该按照我的想法做。

,

您可以使用hierarchyid类型。它带有许多与层次结构本身一起使用的方法,例如:

  • GetAncestor
  • GetDescendant
  • GetLevel
  • GetRoot
  • IsDescendantOf

在您的示例中,您将具有以下内容:

ID      Name
/1/     Architecture
/1/1/   Asses Invenctory
/1/2/   Process2
/2/     Assset Management 

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...