我有兩列數據集:索引和級別。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 Power Query中找到答案,但它需要永久運行,因此需要找到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