Ich habe Datensatz mit zwei Spalten: Index und Ebene.SQL-Abfrage - Eltern-Index aus Ebene und Kind-Index
Level ist die Nummer, die die Ebene in der Hierarchie der verschachtelten übergeordneten untergeordneten Datensätze angibt.
Die Datensätze sind in der Reihenfolge der Hierarchie und Index ist nur die Zeilennummer des Datensatzes.
Die Regel ist, dass jeder übergeordneten Datensatz Rekordwert = Kinder Ebene hat - 1.
Meine Herausforderung ist der Eltern-Index auf der Grundlage dieser Regel zu identifizieren.
Für jeden Datensatz muss ich SQL-Abfrage, die den übergeordneten Index des Datensatzes erhalten.
Die SQL-Abfrage wird ein Selbst verbinden, und den maximalen Indexwert erhalten, wo die Self-Join-Index < child.index und die Self-Join level = child.level
ich Hilfe brauche, um herauszufinden, wie man schreibt diese SQL.
Ich kann MS Access verwenden oder SQL in VBA verwenden, um diese Abfrage durchzuführen.
Dies ist eine visuelle Darstellung des Datensatzes.
Dies ist ein Beispieldaten und erwartete Ergebnis .. wollen Eltern Index .. geordneten Ebene ist Kind Level erreichen - 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
Edited hinzufügen: Ich habe versucht, dies zu tun in Excel Power Query, und eine Antwort gefunden, aber es dauert ewig zu laufen, so müssen SQL VBA/ADO-Lösung zu finden. Aber hier ist Power Query-Lösung, um Ideen zu geben, wie man SQL macht.
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"
Mit dieser Power-Abfrage Lösung findet Max Index, in dem jeden Zeilenindex < alle Indices und level = Niveau -1
einige Proben zusammen mit erwartetem Ergebnis würde helfen – TheGameiswar
Bitte liefern Sie Beispieldaten und erwartetes Ergebnis. –
Bitte keine Daten als Bild angeben. Wir müssten es erneut eingeben ... Bitte fügen Sie Ihre Daten einen Copy'n'pasteable Text hinzu. Am besten wäre ein Testszenario mit einer CREATE TABLE- und einigen INSERT INTO-Anweisungen. Sie würden viel mehr gute Antworten bekommen ... – Shnugo