Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-08-2019
bucanero bucanero is offline
Miembro
 
Registrado: nov 2013
Ubicación: Almería, España
Posts: 208
Poder: 13
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
  #2  
Antiguo 05-08-2019
orodriguezca orodriguezca is offline
Miembro
 
Registrado: ene 2009
Posts: 221
Poder: 18
orodriguezca Va por buen camino
Yo probaría la siguiente instrucción:

Código SQL [-]
SELECT 
  cliente, 
  sum(case when mes = 201901 then Cantidad else 0) as Enero,
  sum(case when mes = 201902 then Cantidad else 0) as Febrero,
  sum(case when mes = 201903 then Cantidad else 0) as Marzo,
  sum(case when mes = 201904 then Cantidad else 0) as Abril,    
  sum(case when mes = 201905 then Cantidad else 0) as Mayo,    
  sum(case when mes = 201906 then Cantidad else 0) as Junio,    
  sum(case when mes = 201907 then Cantidad else 0) as Julio,    
  sum(case when mes = 201908 then Cantidad else 0) as Agosto,    
  sum(case when mes = 201909 then Cantidad else 0) as Septiembre,    
  sum(case when mes = 201910 then Cantidad else 0) as Octubre,    
  sum(case when mes = 201911 then Cantidad else 0) as Noviembre,    
  sum(case when mes = 201912 then Cantidad else 0) as Diciembre,    
FROM compra 
GROUP BY cliente, mes;
Responder Con Cita
  #3  
Antiguo 12-08-2019
adrall adrall is offline
Miembro
 
Registrado: ene 2007
Posts: 99
Poder: 20
adrall Va por buen camino
Si esta es la solución que me ha parecido mejor aunque he utilizado if en lugar de case .

También he visto alguna solución para cuando no se conocen previamente los nombre de los campos, como esta:

http://buysql.com/mysql/14-how-to-au...ot-tables.html

Muchas gracias y saludos a todos.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
SELECT con campos calculados y condicionados Angel.Matilla Firebird e Interbase 9 11-05-2019 11:56:14
select count con varios campos aanil SQL 4 17-05-2008 02:37:18
Alinear campos en un select (comboBox). mcalmanovici PHP 3 21-09-2007 06:45:35
un Select max de varios campos Camilo SQL 3 07-09-2007 16:34:15
select que me mueste los campos de una tabla cahosoft Oracle 1 01-10-2004 00:02:54


La franja horaria es GMT +2. Ahora son las 02:26:11.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi