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

[SOLUCIONADO] Usando PIVOT

Estas en el tema de Usando PIVOT en el foro de Oracle en Foros del Web. Hola amigos del foro necesito su ayuda, quiero usar el PIVOT para obtener mi consulta de la siguiente manera. FECHA-M-B-E este es mi query que ...
  #1 (permalink)  
Antiguo 03/05/2013, 10:52
 
Fecha de Ingreso: abril-2012
Mensajes: 10
Antigüedad: 12 años, 6 meses
Puntos: 0
Pregunta Usando PIVOT

Hola amigos del foro necesito su ayuda, quiero usar el PIVOT para obtener mi consulta de la siguiente manera.
FECHA-M-B-E

este es mi query que quiero convertir con PIVOT
Código SQL:
Ver original
  1. [PHP]SELECT c.ind_estado, SUM(b.vkpi_valor),b.vkpi_fec_medida
  2. FROM vkpi_vector b
  3. LEFT JOIN dkpi_vector c ON c.dkpi_vector_id = b.dkpi_vector_id
  4. WHERE b.cod_area_empr='06'
  5. AND b.cod_cargo_pers='030'
  6. AND b.cod_pers='0044'
  7. AND b.vkpi_fec_medida BETWEEN '01/03/2013' AND '31/03/2013'
  8. GROUP BY b.dkpi_vector_id,c.ind_estado,b.vkpi_fec_medida

lo que e hecho es esto:
Código MySQL:
Ver original
  1. select c.ind_estado, SUM(b.vkpi_valor),b.vkpi_fec_medida
  2. FROM vkpi_vector b
  3. LEFT JOIN dkpi_vector c ON c.dkpi_vector_id = b.dkpi_vector_id
  4. WHERE b.cod_area_empr='06'
  5. AND b.cod_cargo_pers='030'
  6. AND b.cod_pers='0044'
  7. AND b.vkpi_fec_medida between '01/03/2013' AND '31/03/2013'
  8. GROUP BY b.dkpi_vector_id,c.ind_estado,b.vkpi_fec_medida
  9.     ) s
  10. PIVOT (SUM(b.vkpi_valor) FOR c.ind_estado IN ('M' as buenos,'B' as malos,'E' as excelentes));
pero me da el siguiente error
*ORA-01748: only simple column names allowed here
01748. 00000 - "only simple column names allowed here"

Última edición por gnzsoloyo; 03/05/2013 a las 10:57
  #2 (permalink)  
Antiguo 03/05/2013, 12:37
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Usando PIVOT

Este tipo de consultas suelen tener bastantes problemas con el uso de alias en las tablas.

Teniendo en cuenta que es necesario para ti utiliarlas, podrías apoyarte en subconsultas.

Prueba esto:
Código SQL:
Ver original
  1. SELECT *
  2. FROM
  3. (
  4.     SELECT ind_estado,vkpi_valor,vkpi_fec_medida
  5.     FROM
  6.     (
  7.           SELECT c.ind_estado ind_estado,
  8.                  SUM(b.vkpi_valor) vkpi_valor,
  9.                  b.vkpi_fec_medida vkpi_fec_medida
  10.           FROM vkpi_vector b
  11.           LEFT JOIN dkpi_vector c ON c.dkpi_vector_id = b.dkpi_vector_id
  12.           WHERE b.cod_area_empr='06'
  13.           AND b.cod_cargo_pers='030'
  14.           AND b.cod_pers='0044'
  15.           AND b.vkpi_fec_medida BETWEEN '01/03/2013' AND '31/03/2013'
  16.           GROUP BY b.dkpi_vector_id,c.ind_estado,b.vkpi_fec_medida
  17.     ) t1
  18. )
  19. PIVOT (SUM(vkpi_valor) FOR ind_estado IN ('M' AS buenos,'B' AS malos,'E' AS excelentes));
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 03/05/2013, 13:13
 
Fecha de Ingreso: abril-2012
Mensajes: 10
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Usando PIVOT

Muchas gracias huesos52 realmente solucionaste el problema que plantie. El alias era el inconveniente.

Etiquetas: pivot, usando
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 11:57.