Consultas recursivas en SQL

Submitted by achiola on Dom, 12/05/2010 - 19:18

A continuación se muestra como se pueden realizar consultas recursivas en SQL Server 2008, va el ejemplo.

 

------------------------------------------------------
-- Script para demostrar como se pueden realizar 
-- consultas recursivas en sql server 2008
-- escrito por Abel Chiola - 5 de diciembre de 2010
------------------------------------------------------

--Seleccionamos nuestra base de datos de pruebas
use pruebas
go

--Ahora vamos a crear y "sembrar" una tabla para la demo
with empleados ( empleadoId, empleadoNombre, jefeId ) as
(				select 1, 'Empleado 1', null 
	union		select 2, 'Empleado 1.2', 1
	union		select 3, 'Empleado 1.3', 1
	union		select 4, 'Empleado 1.2.1', 2
	union		select 5, 'Empleado 1.2.2', 2
	union		select 6, 'Empleado 1.2.1.1', 4
)

--Por último vamos a crear una CTE donde se produce la recursividad
,tablaArbol (	empleadoId,		nombreEmpleado,		jefeId,		jefeNombre,		nivel ) as
(

--- Este es el miembro ancla, o sea el punto de partida
	select		e.empleadoId,	e.empleadoNombre,	e.jefeId,	e.empleadoNombre,	0
	from empleados as e
	where e.jefeId is null

--- cominacion	
	union all

--- Miembros recursivos	
	select		e2.empleadoId,	e2.empleadoNombre,	e2.jefeId,	e3.empleadoNombre,	nivel + 1 
	from empleados e2 
	join empleados e3
	on e2.jefeId = e3.empleadoId
	join tablaArbol as tA
	on e2.jefeId = ta.empleadoId
)
---- Luego mostramos los el resultado
select * from tablaArbol

 

Añadir nuevo comentario

glqxz9283 sfy39587stf02 mnesdcuix8
sfy39587stf03
sfy39587stf04