Eltern- / Kinderhierarchie – SQL server (tree)

Ich versuche, die Struktur von Eltern / Kind über SQL-Abfrage zu bekommen.

Ich habe diesen Code:

state_code, Beschreibung

A000 A010 B000 B010 B01A B01B B020 B02A 

Ich möchte eine Struktur wie parent_id, element_id und desc

So dass:

 A A000 -01 (from A) --A010 B B000 -01 --B010 --B01A -02 -- 

Ich habe es mit diesem Code versucht, aber leider funktioniert es nicht.

 select distinct SUBSTRING(REPLACE(state_cd,'0',''),1, LEN(REPLACE(state_cd, '0', '')) -1) AS parent_id, REPLACE(state_cd,'0','') state_id, state_cd, desc_1 from CATEGORYSTRUCTURE inner join CATEGORYITEMS on CATEGORYSTRUCTURE.struct_id = CATEGORYITEMS.struct_id left join STATECODES on key_1 = state_cd where state_type = '22' UNION ALL select distinct SUBSTRING(REPLACE(state_cd,'0',''),1, LEN(REPLACE(state_cd, '0', '')) -1) AS parent_id, REPLACE(state_cd,'0','') state_id, stat_cd, desc_1 from CATEGORYITEMS inner join STATECODES on key_1 = state_cd where state_type = '22' 

Mein Ergebnis:

 parent_id stat_id stat_cd desc_1 O O000 11 P P000 Pa) Q Q000 prod R R000 Zus S S000 Ver T T000 Pack A A1 A010 Get A A1 A100 Kakt A A3 A030 Kol A A7 A070 Milk A A8 A080 Spt A1 A11 A110 Lo A1 A1A A01A Hcht 

Was ich will, ist alles unter den jeweiligen Charakteren

  A A7 A070 Milk A A8 A080 Spt A A11 A110 Lo A1 A1A A01A Hcht 

Ich kann nicht verstehen, was genau du willst, aber ich denke, diese Frage kann dir helfen:

 SELECT state_cd , SUBSTRING(state_cd,1,1) As Parent0 , CASE WHEN state_cd Like '__[^0]_' THEN SUBSTRING(state_cd,2,2) ELSE '' END As Parent1 , CASE WHEN state_cd Like '___[^0]' THEN SUBSTRING(state_cd,4,1) ELSE '' END As Parent2 FROM yourTable