Salut,
cred ca pentru intelegere, mai natural este sa privesti nu ca pe o recursivitate, ci ca pe o iteratie cu lucru intr-o coada: ai o coada in care adaugi datele din selectul scris in orginal:
<quote>
-- Definesc recursivitatea
SELECT e.IDM, e.ID, e.Nume,Nivel + 1
FROM dbo.emp AS e
INNER JOIN Ierarhie AS d
-- astfel scot angajatii care au sef(e.IDM) exact codul managerului selectat(d.ID)
ON e.IDM = d.ID
</quote>
Cat timp mai ai ceva in coada, extragi din ea si generezi alte recorduri pe care le adaugi in coada. O parcurgere in latime a unui graf, daca vrei, pornind de la inregistrarea data de:
<quote>
SELECT IDM,ID,Nume,0 as Nivel
from dbo.emp
WHERE IDM IS NULL
</quote>
si mergand pe legaturile (muchiile) date de e.IDM = d.ID. Daca le ai cu algoritmica, atunci e mai natural sa interpretezi in felul acesta. Cum o fi implementarea, asta e alta poveste.
...parerea mea.
Lucian