Este query lo construimos dinámicamente en clase para intentar construir jerarquias que posteriormente un cubo fuese capaz de poner en niveles.
Yo creo que el código casi se explica solo, así que ahí va el query y luego su resultado
create table Empleados ( idEmpleado int identity (1,1) primary key,
NombreEmpleado varchar(100) ,
idJefe int,
constraint fk_jefeempleado foreign key (idjefe) references Empleados (idEmpleado))
go
insert into Empleados (NombreEmpleado,idjefe) values('Javier El jefe',null)
insert into Empleados (NombreEmpleado,idjefe) values('Miguel Empleado',1)
insert into Empleados (NombreEmpleado,idjefe) values('Pepe El jefe',null)
insert into Empleados (NombreEmpleado,idjefe) values('antonio Empleado',3)
insert into Empleados (NombreEmpleado,idjefe) values('luis Empleado',2)
go
with cte (idEmpleado,NombreEmpleado,Nombrejefe,idjefe, jerarquia) as
(select IdEmpleado,NombreEmpleado,cast('JEFE' as varchar(100)) NombreJefe,idjefe ,
cast(cast (row_number() over( order by idEmpleado) as varchar(100))+'.'as varchar(100)) jerarquia
from empleados 
where idjefe is null
union all
select e.IdEmpleado,e.NombreEmpleado, cte.NombreEmpleado,e.idJefe as NombreJefe ,
cast (jerarquia+cast (row_number() over( order by e.idEmpleado) as varchar(100))+'.' as varchar(100))
from empleados E inner join
cte on e.idJefe=cte.idEmpleado
where not e.idjefe is
null
)
select * from cte
order by jerarquia

 

El resultado de la ejecución es

 

id Nombre JEFE idjefe jerarquia
1 Javier El jefe JEFE NULL 1.
2 Miguel Empleado Javier El jefe 1 1.1.
5 luis Empleado Miguel Empleado 2 1.1.1.
3 Pepe El jefe JEFE NULL 2.
4 antonio Empleado Pepe El jefe 3 2.1.

 

 

 

 

0 Shares:
Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

You May Also Like

UNPIVOT “SINCRONO”

Más de una vez nos hemos encontrado en la situación de tener que unpivotar una tabla, teniendo así que recurrir o bien al componente “Unpivot” de SSIS o incluso a tener que guardar los datos en tabla y realizar posteriormente una lectura de esta misma utilizando T-SQL para unpivotarla, con los problemas que ambas soluciones nos puedan conllevar con un gran volumen de datos.
Leer más

Arquitecturas lambda en Azure

Las necesidades de análisis en los diferentes escenarios de negocio se vuelven cada vez más complejas. Dato histórico, dato en tiempo real, dato desde diferentes fuentes, dato predictivo, todo a la vez y en el mismo punto centralizado. ¿Nos hemos vuelto locos? ¿Es imposible? ¿No seremos capaces? Nada de eso, con Azure y una buena planificación conseguiremos una arquitectura con la última tecnología y que, sobre todo, cubre nuestras necesidades de análisis por complejas que sean