インデックスとレベルの2つのカラムを持つデータセットがあります。SQLクエリ - レベルと子インデックスから親インデックスを取得
レベルは、ネストされた親子レコードの階層レベルを示す数値です。
レコードは階層の順であり、インデックスは単なるレコードの行番号です。
ルールは、任意のレコードの親レコードが=子レベルレベルを持っていることである - 1
私の挑戦は、このルールに基づいて、親のインデックスを特定することです。
レコードごとに、レコードの親インデックスを取得するSQLクエリが必要です。
SQLクエリは、私が書く方法を把握する助けを必要とする自己結合すること、及び自己がインデックス< child.indexと自己がレベル= child.level
に参加する参加する最大のインデックス値を取得しますこのSQL。
MS Accessを使用するか、VBAでSQLを使用してこのクエリを実行できます。
これは、データセットの視覚的表現です。
これはサンプルデータと期待された結果である.. ..親レベルは子レベルでの親のインデックスを取得したい - 1.追加するように編集
Index,Level Number,Parent Level,Parent Index
1,1,1,1
2,2,1,1
4,4,3,3
9,9,8,8
3,3,2,2
5,5,4,4
8,8,7,7
6,6,5,5
7,7,6,6
10,10,9,9
11,11,10,10
12,12,11,11
13,13,12,12
14,14,13,13
15,14,13,13
16,14,13,13
17,14,13,13
18,14,13,13
19,14,13,13
20,14,13,13
21,13,12,12
22,13,12,12
23,13,12,12
24,14,13,23
25,14,13,23
26,14,13,23
27,11,10,10
28,9,8,8
29,9,8,8
30,9,8,8
31,9,8,8
32,9,8,8
33,9,8,8
34,9,8,8
35,8,7,7
36,9,8,35
37,10,9,36
38,11,10,37
39,11,10,37
40,12,11,39
41,12,11,39
42,13,12,41
43,13,12,41
44,13,12,41
45,11,10,37
46,12,11,45
47,13,12,46
48,14,13,47
49,14,13,47
50,14,13,47
51,14,13,47
52,14,13,47
53,14,13,47
54,14,13,47
55,13,12,46
56,13,12,46
57,13,12,46
58,9,8,35
59,9,8,35
60,9,8,35
61,9,8,35
62,8,7,7
63,8,7,7
64,8,7,7
65,8,7,7
66,8,7,7
67,8,7,7
68,8,7,7
: 私はこれを実行しようとしましたExcelのパワークエリでは、答えを見つけましたが、実行するために永遠にかかるので、SQL VBA/ADOソリューションを見つける必要があります。しかし、Power Queryのソリューションは、SQLの実行方法に関するアイディアを提供するのに役立ちます。
let
Source = Excel.CurrentWorkbook(){[Name="Tabelle3"]}[Content],
ParentIndex = Table.AddColumn(Source, "ParentIndex", each let Index=[Index], LN=[Level Number] in List.Max(Table.SelectRows(Source, each _[Index] < Index and _[Level Number]=LN-1)[Index])),
#"Merged Queries" = Table.NestedJoin(ParentIndex,{"ParentIndex"},ParentIndex,{"Index"},"NewColumn",JoinKind.LeftOuter),
#"Expanded NewColumn" = Table.ExpandTableColumn(#"Merged Queries", "NewColumn", {"Level Number"}, {"Level Number.1"})
in
#"Expanded NewColumn"
この電力クエリ溶液は、最大インデックス各行インデックス<にすべてのインデックスとレベル=レベル-1
期待される結果と一緒にいくつかのサンプルを発見します助けてください – TheGameiswar
サンプルデータと期待される結果をご提供ください。 –
データを画像として含めないでください。私たちはそれを再入力する必要があります...あなたのデータにコピー&ペースト可能なテキストを追加してください。ベストは 'CREATE TABLE'といくつかの' INSERT INTO'ステートメントによるテストシナリオでしょう。あなたはもっと良い答えを得るでしょう... – Shnugo