Sto cercando di eseguire ciò che ritengo sia una ricorsione difficile utilizzando un CTE è SQL Server 2008. Non riesco a spiegarmi come funziona.Ricorsione CTE di SQL Server 2008
Negli esempi seguenti è possibile assumere una profondità fissa di 3 ... nulla sarà mai inferiore a quello. Nella vita reale, la profondità è "più profonda" ma ancora fissa. Nell'esempio ho cercato di semplificarlo.
I miei dati di input sono come i seguenti.
ID PARENT_ID NAME DEPTH
------------------------------------------
1 NULL A 1
2 1 B 2
3 2 C 3
4 1 D 2
L'output del mio CTE dovrebbe essere la seguente tabella.
LEVEL1_ID LEVEL2_ID LEVEL3_ID LEVEL1_NAME LEVEL2_NAME LEVEL3_NAME
--------------------------------------------------------------------------------
1 NULL NULL A NULL NULL
1 2 NULL A B NULL
1 2 3 A B C
1 4 NULL A D NULL
Se posso ottenere le colonne ID nell'output posso certamente mappare nomi in una tabella di ricerca.
Sono aperto ad altri modi per eseguire anche questo, incluso l'utilizzo di SSIS.
non riuscivo a capire quale logica si sta applicando, cercando in vostra uscita. Penso che l'ultima riga dovrebbe essere '/ B/D' perché l'id genitore di' D' è 2, ad esempio 'B' – IsmailS
ha appena aggiornato la domanda. scusa. – thomas
Ancora lo stesso. Nella riga n. 4, perché hai bisogno di Level1_ID come '1' quando il suo id genitore è 2? – IsmailS