SQL - pasar query de oracle a sql server

 
Vista:
sin imagen de perfil

pasar query de oracle a sql server

Publicado por Javier (1 intervención) el 25/11/2015 19:48:44
EStimados favor su ayuda al momento no conosco mucho de sql server y no se como puedo hacer para pasar este query que se encuentra de oracle a sqlserver
Gracias por su ayuda


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
SELECT SYS_CONNECT_BY_PATH(TRIM(A.OPCION_MENU), '/') "PATH"
      FROM (SELECT T.ID_IVR_MEN_REC,
                   T.ID_OPCION,
                   T.ID_OPCION_PADRE,
                   T.OPCION_MENU
              FROM IVR_MENU_RECURSIVO T
             GROUP BY T.ID_IVR_MEN_REC,
                      T.ID_OPCION,
                      T.ID_OPCION_PADRE,
                      T.OPCION_MENU
             START WITH T.ID_IVR_MEN_REC IN
                        (SELECT DISTINCT X.ID_IVR_MEN_REC
                           FROM IVR_MENU_RECURSIVO X
                          WHERE X.ID_MENU = CV_IDMENU
                         UNION
                         SELECT DISTINCT Y.ID_IVR_MEN_REC
                           FROM IVR_MENU_DETALLE Y
                          WHERE Y.ID_MENU = CV_IDMENU)
            CONNECT BY PRIOR T.ID_OPCION_PADRE = T.ID_OPCION
             ORDER BY T.ID_OPCION) A
     WHERE A.ID_IVR_MEN_REC IN
           (SELECT DISTINCT X.ID_IVR_MEN_REC
              FROM IVR_MENU_RECURSIVO X
             WHERE X.ID_MENU = CV_IDMENU
            UNION
            SELECT DISTINCT Y.ID_IVR_MEN_REC
              FROM IVR_MENU_DETALLE Y
             WHERE Y.ID_MENU = CV_IDMENU)
    CONNECT BY PRIOR A.ID_OPCION = A.ID_OPCION_PADRE
     START WITH A.ID_OPCION_PADRE IS NULL;

Al momento solo he podido cambiar la primera parte de esta manera pero aun no lego al objetivo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
with x as (
 
		select   ID_IVR_MEN_REC
				,ID_OPCION
				,ID_OPCION_PADRE
				,OPCION_MENU
				,1 as level
				, row_number()
				over (partition by T.ID_IVR_MEN_REC
						order by T.OPCION_MENU
						--GROUP BY T.ID_IVR_MEN_REC
						--		,T.ID_OPCION
						--		,T.ID_OPCION_PADRE
						--		 T.OPCION_MENU
				 ) as rn
				,T.OPCION_MENU as scbp
 
		from IVR_MENU_RECURSIVO T
 
				 ),cte as (
 
		select ID_IVR_MEN_REC
			   ,OPCION_MENU
			   ,level
			   ,rn
			   ,''/'' + cast(RTRIM(LTRIM(OPCION_MENU)) as varchar(max)) as scbp
		from x
			where rn = 1
			union all
 
			select x.ID_IVR_MEN_REC
				   ,x.OPCION_MENU
				   ,cte.level + 1 as level
				   ,x.rn
				   ,cte.scbp + ''/'' + cast(x.scbp as varchar(max)) as scbp
 
			from x inner join cte on x.rn - 1 = cte.rn and x.ID_IVR_MEN_REC = cte.ID_IVR_MEN_REC
		)
		select ID_IVR_MEN_REC, max(scbp)
		from cte
 
		group by ID_IVR_MEN_REC
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