Możesz użyć SQL 2005 CTE, aby silnik SQL robił to rekurencyjnie.
Wyliczenie podstawowych podejść znajduje się pod adresem http://blogs.msdn.com/anthybloesch/archive/2006/02/15/Hierarchies-in-SQL-Server-2005.aspx
Celko ma również drzewo w księdze SQL, która obejmuje to wszystko do n-tego stopnia.
Lub możesz brutalnie wymusić, wybierając każdy poziom do lokalnej zmiennej tabeli, a następnie wykonując pętlę, wstawiając elementy podrzędne z zaznaczeniem, aż @@ROWCOUNT wynosi zero (tzn. nie znajdziesz więcej elementów podrzędnych). Jeśli nie masz dużo danych, jest to łatwe do zakodowania, ale sugerowałeś, że szukasz wydajności, mówiąc, że nie chcesz kursora.