我在表1中有以下记录:
L1 L1DESC L2 L2DESC L3 L3DESC L4 L4DESC L5 L5DESC L6 L6DESC
10 L1 101 L2 101A L3 101A27 L4 101A27B L5 101A27B5 L6
有六级层次结构,在这种情况下,L1是根,L2是L1的子节点,L3是L2的子节点,依此类推。
表2是一个简单的分层架构
级别 - 描述 - 父级
这意味着我想将该单个记录转换为以下分层记录:
LEVEL DESCRIPTION PARENT
10 L1 NULL
101 L2 L1
101A L3 L2
101A27 L4 L3
101A27B L5 L4
101A27B5 L6 L5
在SQL中执行此操作的最快/最优雅的方法是什么?
由于
答案 0 :(得分:2)
由于这是一个固定的层次结构,只需将结果联合起来。
SELECT L1
,L1DESC
,CAST(NULL AS VARCHAR(50)) AS Parent
FROM T1
UNION ALL
SELECT L2
,L2DESC
,L1Desc
FROM T1
UNION ALL
SELECT L3
,L3DESC
,L2Desc
FROM T1
UNION ALL
SELECT L4
,L4DESC
,L3Desc
FROM T1
UNION ALL
SELECT L5
,L5DESC
,L4Desc
FROM T1
UNION ALL
SELECT L6
,L6DESC
,L5Desc
FROM T1
看到这个小提琴:http://sqlfiddle.com/#!3/32e33/2