Digamos que tengo una tabla de empleados, con un registro para cada empleado de mi empresa y una columna para el supervisor (como se ve a continuación). Me gustaría preparar un informe, que enumera los nombres y el título de cada paso en una línea de supervisión. por ejemplo, para dick robbins, 1d # 15, me gustaría una lista de cada supervisor en su "cadena de mando", todo el camino hasta el presidente, un gran queso. Me gustaría evitar el uso de cursores, pero si esa es la única forma de hacerlo, está bien.Cómo recorrer un árbol/Trabajar con datos jerárquicos en el código SQL
id fname lname title supervisorid
1 big cheese president 1
2 jim william vice president 1
3 sally carr vice president 1
4 ryan allan senior manager 2
5 mike miller manager 4
6 bill bryan manager 4
7 cathy maddy foreman 5
8 sean johnson senior mechanic 7
9 andrew koll senior mechanic 7
10 sarah ryans mechanic 8
11 dana bond mechanic 9
12 chris mcall technician 10
13 hannah ryans technician 10
14 matthew miller technician 11
15 dick robbins technician 11
Los datos reales probablemente no serán más de 10 niveles de profundidad ... pero prefiero no sólo hacer 10 exterior se une ... Tenía la esperanza de que había algo mejor que eso, y menos involucrados que los cursores
Gracias por cualquier ayuda.
Puede que le interese mi pregunta: http://stackoverflow.com/questions/3471134/how-to-self-join-recursively-in-sql –
Sus datos tienen un pequeño problema, registre la identificación 1 no puede tener supervisor = 1 romperá la tabla CTE – AaA