Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Pivotar Consulta en Oracle 10g

Estas en el tema de Pivotar Consulta en Oracle 10g en el foro de Oracle en Foros del Web. Hola gente, Tengo que pivotar una consulta, para cambiar el resultado de columnas por filas, tenemos oracle 10, no podemos emplear la clausula PIVOT, me ...
  #1 (permalink)  
Antiguo 17/11/2011, 02:43
 
Fecha de Ingreso: septiembre-2008
Mensajes: 137
Antigüedad: 15 años, 6 meses
Puntos: 0
Pivotar Consulta en Oracle 10g

Hola gente,

Tengo que pivotar una consulta, para cambiar el resultado de columnas por filas, tenemos oracle 10, no podemos emplear la clausula PIVOT, me podeis indicar como podemos sacar esto, estoy probando mil formas y no lo consigo.

Gracias
  #2 (permalink)  
Antiguo 18/11/2011, 18:49
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 5 meses
Puntos: 85
Respuesta: Pivotar Consulta en Oracle 10g

Con las siguientes consultas puedes hacer de forma simple un pivot fila-columna o columna-fila.

Código:
SQL> create table t1 (id number(8), tipo varchar2(10))
  2  /
Table created.
SQL> insert into t1 values (1,'tipo1')
  2  /
1 row created.
SQL> insert into t1 values (2,'tipo2')
  2  /
1 row created.
SQL> insert into t1 values (3,'tipo3')
  2  /
1 row created.
SQL> insert into t1 values (4,'tipo4')
  2  /
1 row created.
SQL> select max(case when tipo = 'tipo1' then tipo end) tipo1
  2        ,max(case when tipo = 'tipo2' then tipo end) tipo2
  3        ,max(case when tipo = 'tipo3' then tipo end) tipo3
  4        ,max(case when tipo = 'tipo4' then tipo end) tipo4
  5  from t1
  6  /
TIPO1      TIPO2      TIPO3      TIPO4
---------- ---------- ---------- ----------
tipo1      tipo2      tipo3      tipo4
Código:
SQL> create table t1 (
  2   id number(8),
  3   tipo1 varchar2(10),
  4   tipo2 varchar2(10),
  5   tipo3 varchar2(10),
  6   tipo4 varchar2(10)
  7  )
  8  /
Table created.
SQL> insert into t1 values (1,'tipo1','tipo2','tipo3','tipo4')
  2  /
1 row created.
SQL> select id, tipo
  2  from (
  3   select id, tipo1 as tipo from t1
  4   union
  5   select id, tipo2 as tipo from t1
  6   union
  7   select id, tipo3 as tipo from t1
  8   union
  9   select id, tipo4 as tipo from t1
 10  )
 11  /
        ID TIPO
---------- ----------
         1 tipo1
         1 tipo2
         1 tipo3
         1 tipo4
Estos ejemplos sirven si conoces de antemano las columnas o filas involucradas en el pivot, en caso contrario, donde las columnas o filas son variables, puedes generar la consulta utilizando SQL dinámico.

Saludos

Etiquetas: 10g
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:58.