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
Leer más

Machine Learning vs SSAS Data Mining

En este vídeo del SolidQ Summit revisaremos diferencias iniciales sobre cosas que se pueden hacer y que no se pueden hacer (nativamente) y veremos casos concretos comparando rendimiento, precisión en los resultados, como lo haríamos en cada herramienta