Ver Mensaje Individual
  #5 (permalink)  
Antiguo 10/10/2018, 12:16
Avatar de Libras
Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 7 meses
Puntos: 774
Respuesta: Corrección de código para consulta MySql

Si pivot no existe en mysql pero hay funciones para emularlo como bien se comenta, tu problema es que con case las columnas que no tienen valores aparecen como 0 y tu necesitas que no salgan esos 0 verdad? para eso vas a tener que hacer funciones de agregado algo como esto:


Código MySQL:
Ver original
  1. select p.nuevo, max(tipo_via) as campo1, max(calle) as calle, max(numero_exterior) as num from(
  2. SELECT p.nuevo,
  3. (CASE WHEN r.campo = 'tipo_via' THEN s.nuevo ELSE 0 END) AS tipo_via,
  4. (CASE WHEN r.campo = 'calle' THEN s.nuevo ELSE 0 END) AS calle,
  5. (CASE WHEN r.campo = 'numero_exterior' THEN s.nuevo ELSE 0 END) AS numero_exterior,
  6. (CASE WHEN r.campo = 'numero_interior' THEN s.nuevo ELSE 0 END) AS numero_interior,
  7. (CASE WHEN r.campo = 'referencia' THEN s.nuevo ELSE 0 END) AS referencia,
  8. (CASE WHEN r.campo = 'codigo_postal' THEN s.nuevo ELSE 0 END) AS codigo_postal,
  9. (CASE WHEN r.campo = 'estado' THEN s.nuevo ELSE 0 END) AS estado,
  10. (CASE WHEN r.campo = 'municipio' THEN s.nuevo ELSE 0 END) AS municipio,
  11. (CASE WHEN r.campo = 'ciudad' THEN s.nuevo ELSE 0 END) AS ciudad,
  12. (CASE WHEN r.campo = 'area_metropolitana' THEN s.nuevo ELSE 0 END) AS area_metropolitana,
  13. (CASE WHEN r.campo = 'brick_atv' THEN s.nuevo ELSE 0 END) AS brick_atv,
  14. (CASE WHEN r.campo = 'brick_ims' THEN s.nuevo ELSE 0 END) AS brick_ims,
  15. (CASE WHEN r.campo = 'zona_postal' THEN s.nuevo ELSE 0 END) AS zona_postal,
  16. (CASE WHEN r.campo = 'colonia' THEN s.nuevo ELSE 0 END) AS colonia,
  17. (CASE WHEN r.campo = 'lada' THEN s.nuevo ELSE 0 END) AS lada
  18. FROM cambio p
  19. INNER JOIN cambio s ON p.id_cambio = s.id_cambio
  20. INNER JOIN cambio r ON s.nuevo = r.nuevo
  21. GROUP BY p.nuevo
  22. ) as completa
  23. group by nuevo
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me