Algunas veces necesitamos darle un orden
jerárquico a datos que están en la misma consulta, para esto utilizamos la
función connect by para comparar los
campos y start with para indicarle
cual es el dato inicial, si no está el start with realizara el proceso por cada
registro.
Nota: Al utilizar la función connect
by se agrega un dato el level,
que indica en qué nivel de jerarquía esta.
Ejemplo: Queremos saber el orden de la empresa.
Creamos una tabla donde agregamos la
jerarquía de la empresa
create table jerarquia_gerencial(
codigo number,
nombre_cargo varchar2(200),
codigo_padre number
);
Insertamos 7 registros.
insert into jerarquia_gerencial values (1,'Director
General',null)
insert into jerarquia_gerencial values (2,'Viceprecidente
Ventas',1);
insert into jerarquia_gerencial values (3,'Jefe
de Ventas',2);
insert into jerarquia_gerencial values (4,'Ventas',3);
insert into jerarquia_gerencial values (5,'Viceprecidente
Servicio',1);
insert into jerarquia_gerencial values (6,'Jefe
de Servicios',5);
insert into jerarquia_gerencial values (7,'Soporte
Tecnico',6);
Realizamos una consulta en orden de
la misma tabla.
select
codigo,codigo_padre,nombre_cargo
from jerarquia_gerencial a
connect by prior codigo = codigo_padre
start with codigo_padre is null;
Output:
Para
que se vea mejor podemos utilizar una función LPAD y el recurso level.
select
codigo,codigo_padre,Lpad(nombre_cargo,length(nombre_cargo)+(level*3),' ')
Cargo
from jerarquia_gerencial a
connect by prior codigo = codigo_padre
start with codigo_padre is null;
Output:
No hay comentarios:
Publicar un comentario