Ver Mensaje Individual
  #7  
Antiguo 05-08-2019
bucanero bucanero is offline
Miembro
 
Registrado: nov 2013
Ubicación: Almería, España
Posts: 208
Reputación: 11
bucanero Va camino a la fama
Dandole vueltas al tema de extraer la ventas de cada mes del campo con la lista de valores separados por comas, se puede utilizar algo así:

Código SQL [-]
select cliente,
  cast(substring_index(substring_index(resumen, ',', 1), ',', -1) AS DECIMAL(10,2)) as enero, 
  cast(substring_index(substring_index(resumen, ',', 2), ',', -1) AS DECIMAL(10,2)) as febrero,
  cast(substring_index(substring_index(resumen, ',', 3), ',', -1) AS DECIMAL(10,2)) as marzo,
  cast(substring_index(substring_index(resumen, ',', 4), ',', -1) AS DECIMAL(10,2)) as abril,
  cast(substring_index(substring_index(resumen, ',', 5), ',', -1) AS DECIMAL(10,2)) as mayo,
  cast(substring_index(substring_index(resumen, ',', 6), ',', -1) AS DECIMAL(10,2)) as junio,
  cast(substring_index(substring_index(resumen, ',', 7), ',', -1) AS DECIMAL(10,2)) as julio, 
  cast(substring_index(substring_index(resumen, ',', 8), ',', -1) AS DECIMAL(10,2)) as agosto,
  cast(substring_index(substring_index(resumen, ',', 9), ',', -1) AS DECIMAL(10,2)) as septiembre,
  cast(substring_index(substring_index(resumen, ',', 10), ',', -1) AS DECIMAL(10,2)) as octubre,
  cast(substring_index(substring_index(resumen, ',', 11), ',', -1) AS DECIMAL(10,2)) as noviembre,
  cast(substring_index(substring_index(resumen, ',', 12), ',', -1) AS DECIMAL(10,2)) as diciembre
from (
  -- mismo SQL anterior
  SELECT cliente.cliente, GROUP_CONCAT(ifNull(ventas.importe, 0) ORDER BY mes.mes SEPARATOR '\,') as resumen
  FROM
    -- genera un registro para cada mes de cada cliente
    ((SELECT DISTINCT month(fecha) AS mes FROM compra) mes,
    (SELECT DISTINCT cliente FROM compra) cliente)
    -- rellena los importes del mes
    LEFT JOIN (
      SELECT cliente, month(fecha) AS mes, sum(importe) AS importe
      FROM compra
      WHERE year(fecha)=year(now()) AND cliente<>''
      GROUP BY cliente, month(fecha)
    ) ventas ON ventas.cliente=cliente.cliente AND ventas.mes=mes.mes
  GROUP BY cliente
  --
) dat

y con esto ya si se tiene una tabla con cada venta de un determinado mes en su correspondiente columna del mes
Responder Con Cita