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

階層には 6 つのレベルがあり、このシナリオでは、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 に答える