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

Convertir de Filas a Columnas

Estas en el tema de Convertir de Filas a Columnas en el foro de Oracle en Foros del Web. Buenos Días, Esta es la primera vez que escribo, les comento que mi problema está en que no hallo la forma de pasar estos datos ...
  #1 (permalink)  
Antiguo 24/07/2009, 10:51
 
Fecha de Ingreso: julio-2009
Mensajes: 1
Antigüedad: 15 años, 4 meses
Puntos: 0
Convertir de Filas a Columnas

Buenos Días,

Esta es la primera vez que escribo, les comento que mi problema está en que no hallo la forma de pasar estos datos de fila a columna pues en la tarea que me dieron quieren que los datos aparezcan así:

META ENE FEB MAR

Reparaciones area urbano 0+3 días 100% 6.18 45.04 --
Reparaciones area rural 0+6 días 100% 25.04 52.01 --

Pero al hacer el query solo me ha sido posible colocar la info en columnas:

Reparaciones area urbano 0+3 días Reparaciones area rural 0+6 días
6.18 25.04
25.04 52.01
-- --

El query es:


SELECT "Reparaciones area Urbano 0+3", FROM (
SELECT (sum(DM3)/SUM(MM3))*100 as "Reparaciones area Urbano 0+3",
(SUM(DM5)/SUM(MM5))*100 as "Reparaciones area Urbano 0+6"
FROM (
select
CASE WHEN round(mo_p.ATTENTION_DATE - mo_p.REQUEST_DATE) <= 3 AND mo_a.GEOGRAP_LOCATION_ID = 4
THEN
1
END DM3,
CASE WHEN
mo_a.GEOGRAP_LOCATION_ID = 4
THEN
1
END MM3,
CASE WHEN round(mo_p.ATTENTION_DATE - mo_p.REQUEST_DATE) <= 6 AND mo_a.GEOGRAP_LOCATION_ID != 4
THEN
1
END DM5,
CASE when
mo_a.GEOGRAP_LOCATION_ID != 4
THEN
1
END MM5
FROM or_order or_o,
or_extern_systems_id or_ex,
mo_packages mo_p,
pr_product pr_p,
MO_ADDRESS mo_a
WHERE or_o.order_id > 0
AND or_o.order_id = or_ex.order_id
AND or_ex.package_id = mo_p.package_id
AND mo_p.motive_status_id IN (14, 13) --Atendido
AND mo_p.package_type_id = 59 --Registro de Daño del Producto
AND mo_p.product_type_id = 6042 --Televisión por Cable
AND mo_p.product_id = pr_p.product_id
AND pr_p.commercial_plan_id IN (216, 97, 96, 197, 408, 410)
--AND or_o.CREATED_DATE between :date1 and :date2
AND or_o.OPERATING_UNIT_ID = 342
AND or_o.TASK_TYPE_ID = 90
--AND or_o.ORDER_STATUS_ID = 6
AND mo_a.PACKAGE_ID = mo_p.PACKAGE_ID
)
)
/
FROM or_order or_o,
or_extern_systems_id or_ex,
mo_packages mo_p,
pr_product pr_p
WHERE or_o.order_id > 0
AND or_o.order_id = or_ex.order_id
AND or_ex.package_id = mo_p.package_id
AND mo_p.motive_status_id IN (46,49) --Atendido
AND mo_p.package_type_id = 59 --Registro de Daño del Producto
AND mo_p.product_type_id = 6042 --Televisión por Cable
AND mo_p.product_id = pr_p.product_id
AND pr_p.commercial_plan_id NOT IN (97, 96) -- plan comercial
AND or_o.OPERATING_UNIT_ID = 342 --unidad operativa
AND or_o.TASK_TYPE_ID = 90 --tipo de tarea
AND or_o.ORDER_STATUS_ID = 6 --estado de la orden

Por favor su ayuda,

HR
  #2 (permalink)  
Antiguo 24/07/2009, 14:47
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 10 meses
Puntos: 360
Respuesta: Convertir de Filas a Columnas

Por que no resuelves el problema desde el sistema?

Desconozco si oracle soporta las llamadas referencias cruzadas de access que a simple vista resolvería tu problema.

Un saludo
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 25/07/2009, 03:46
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 17 años, 6 meses
Puntos: 43
Respuesta: Convertir de Filas a Columnas

¿ que son referencias cruzadas ?
  #4 (permalink)  
Antiguo 25/07/2009, 14:39
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 10 meses
Puntos: 360
Respuesta: Convertir de Filas a Columnas

Referencias cruzadas se le conoce a una tecnica utilizada en access (No se que otro sistema) para mostrar el resultado de una consulta de forma invertida.
Las filas se muestran en forma de columnas y las columnas en forma de filas. Para llegar a esto, es necesario hacer uso de funciones como transform y pivot soportadas por Access.

Según el primer mensaje de este post, esa fue la idea que entendí. No se si Oracle tenga un procedimiento similar a este.

Un saludo
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 27/07/2009, 00:17
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 17 años, 6 meses
Puntos: 43
Respuesta: Convertir de Filas a Columnas

Cita:
Iniciado por huesos52 Ver Mensaje
Referencias cruzadas se le conoce a una tecnica utilizada en access (No se que otro sistema) para mostrar el resultado de una consulta de forma invertida.
Las filas se muestran en forma de columnas y las columnas en forma de filas. Para llegar a esto, es necesario hacer uso de funciones como transform y pivot soportadas por Access.

Según el primer mensaje de este post, esa fue la idea que entendí. No se si Oracle tenga un procedimiento similar a este.

Un saludo
Gracias por la aclaracion.
Pues no se me ocurre nada que en oracle pueda funcionar de esa manera. Digo que no se me ocurre, no que no se pueda.

Saludos
  #6 (permalink)  
Antiguo 27/07/2009, 23:36
Avatar de kikolice  
Fecha de Ingreso: marzo-2004
Mensajes: 1.510
Antigüedad: 20 años, 9 meses
Puntos: 7
Respuesta: Convertir de Filas a Columnas

no me puse a revisar bien tu post pero creo que algo como esto te puede ayudar, es un post donde hablo de como convertir un string a tabla (cadena a columna o como le quieras llamar)

http://www.blogzote.com/2008/10/14/c...bla-en-oracle/
__________________
Blogzote.com :-) Mi blog
  #7 (permalink)  
Antiguo 08/09/2009, 11:44
 
Fecha de Ingreso: septiembre-2009
Mensajes: 1
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Convertir de Filas a Columnas

HAZ UNA CONSULTA (Q1) QUE DE TE LOS RESULTADOS AGRUPADOS POR META Y MES

SELECT META,MES,VALOR FROM TABLA WHERE CONDICION group by META, MES ...

META MES VALOR
-------------------------------------------------
Reparaciones area urbano 0+3 días ENE 6.18
Reparaciones area urbano 0+3 días FEB 45.04
Reparaciones area rural 0+6 días FEB 25.04
Reparaciones area rural 0+6 días MAR 52.01


LOS VALORES DE CADA META MES LO OBTENDRAS POR RENGLON Y CON EL SIGUIENTE ARREGLO
PUEDES PASAR LOS MESES A COLUMNAS.

SELECT META, SUM(CASE WHEN MES = 'ENE' THEN VALOR ELSE 0 END) AS ENERO,
SUM(CASE WHEN MES = 'FEB' THEN VALOR ELSE 0 END) AS FEBRERO,
SUM(CASE WHEN MES = 'MAR' THEN VALOR ELSE 0 END) AS MARZO,
...
FROM (
SELECT META,MES,VALOR FROM TABLA WHERE CONDICION ...;
)
GROUP BY META;
  #8 (permalink)  
Antiguo 21/09/2009, 11:07
 
Fecha de Ingreso: septiembre-2009
Mensajes: 10
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Convertir de Filas a Columnas

Es necesario que el resultado salga en un sólo query?
podrías hacer un SP que vaya acumulando u obteniendo la información por cada columna que requieras e ir grabandola a una tabla temporal, y al final sólo haces un query simple a esa tabla...
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 16:50.