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'
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


0