问题描述
我有一个包含以下列的表格:
我需要根据级别数和层次结构创建更多列。
例如:
Level 1
Architecture ->Level 2
->Asses Inventory ->level 3
->Program
如果最多三个级别,我需要创建三列。我已经在PowerBI中实现了这一目标。
如何在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