Consultas recursivas en SQL

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

 

Comentarios

muy bueno el script

se puede consulatr y a l a ves establecer un comando que imprima(print) un reporte(report)...?...pleasse e-mail: xavi_84_527@hotmail.com (se agradece de antemano)

Enviar un comentario nuevo

El contenido de este campo se mantiene privado y no se mostrará públicamente.
CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.