Assuming I have a dataset like this:
What I need to do is to make a dataset like this in SQL Server. Any help is appreciated:
Code on pastebin: https://pastebin.com/SjGbD6Cc
x
CREATE TABLE "TABLE1" ("FOLDER_ID" VARCHAR2(100 CHAR) ,"FOLDER_NAME" VARCHAR2(100 CHAR) , "PATH" VARCHAR2(100 CHAR) );
INSERT INTO TABLE1 VALUES ('1','Folder1','');
INSERT INTO TABLE1 VALUES ('2','Folder1_1','Folder1/Folder1_1');
INSERT INTO TABLE1 VALUES ('3','Folder1_1_1','Folder1/Folder1_1/Folder1_1_1');
INSERT INTO TABLE1 VALUES ('4','Folder1_2','Folder1/Folder1_2');
INSERT INTO TABLE1 VALUES ('5','Folder1_2_1','Folder1/Folder1_2/Folder1_2_1');
INSERT INTO TABLE1 VALUES ('6','Folder1_2_2','Folder1/Folder1_2/Folder1_2_2');
Advertisement
Answer
Perhaps this will help
Example
Select A.Folder_ID
,A.Folder_Name
,Parent_Folder = Pos2
,Lvl = len(Path)-len(replace(Path,'/',''))
From Table1 A
Cross Apply (
Select Pos1 = reverse(trim(JSON_VALUE(S,'$[0]')))
,Pos2 = reverse(trim(JSON_VALUE(S,'$[1]')))
From ( values ( '["'+replace(replace(reverse(Path),'"','"'),'/','","')+'"]' ) ) A(S)
) B
Returns
Folder_ID Folder_Name Parent_Folder Lvl
1 Folder1 NULL 0
2 Folder1_1 Folder1 1
3 Folder1_1_1 Folder1_1 2
4 Folder1_2 Folder1 1
5 Folder1_2_1 Folder1_2 2
6 Folder1_2_2 Folder1_2 2