1

我在表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 中最快/最优雅的方法是什么?

谢谢

4

1 回答 1

3

由于这是一个固定的层次结构,只需合并结果即可。

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

于 2013-06-02T05:25:08.063 回答