SQL - recursividad sql2005

 
Vista:

recursividad sql2005

Publicado por cesar cuncanchun (14 intervenciones) el 04/10/2008 19:29:36
hola:
tengo que sacar un reporte en sql 2005 que me diga los empleados que dependen de alguien y los que dependen de estos asi sucesivamente.

mi tabla se llama EMPLOYEES tiene un campo que se llama POSITION_NBR que indica la posicion y otro que se llama REPORTS_TO que indica a quien reporta.

me meti a la pagina de microsoft technet y mas o menos hice lo que dice el ejemplo:

pero me sale un error que dice "Incorrect syntax near the keyword 'WITH'." no se que puede ser.

WITH reporte (POSITION_NBR,REPORTS_TO,NAME)
AS
(
-- Anchor member definition
SELECT e.POSITION_NBR, e.REPORTS_TO, e.NAME
FROM PS_EMPLOYEES AS e
INNER JOIN PS_EMPLOYEES AS edh
ON e.REPORTS_TO = edh.POSITION_NBR
WHERE e.REPORTS_TO='0035'
UNION ALL
-- Recursive member definition
SELECT e.POSITION_NBR, e.REPORTS_TO, e.NAME
FROM PS_EMPLOYEES AS e
INNER JOIN PS_EMPLOYEES AS edh
ON e.REPORTS_TO = edh.POSITION_NBR
INNER JOIN reporte AS d
ON e.POSITION_NBR = d.POSITION_NBR
)
-- Statement that executes the CTE
SELECT PS_EMPLOYEES.POSITION_NBR,PS_EMPLOYEES.REPORTS_TO,PS_EMPLOYEES.NAME
FROM reporte
INNER JOIN PS_EMPLOYEES AS dp
ON DirectReports .REPORTS_TO = dp.POSITION_NBR
WHERE dp.POSITION_NBR = '0035';
SELECT REPORTS_TO FROM PS_EMPLOYEES WHERE POSITION_NBR ='0035'
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:recursividad sql2005

Publicado por Isaias (5072 intervenciones) el 06/10/2008 20:04:54
¿Estas 100% seguro que tu motor de datos es un 2005 o superior?

Ejecuta esto:

SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition')

muestranos el resultado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:recursividad sql2005

Publicado por Cesar Cuncanchun (14 intervenciones) el 09/10/2008 02:53:14
HOLA:

Que pena es sql 2000, no he ejecutado la sentencia que me enviaste pero es sql 2000
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar