Mostrar resultado de dos consultas MySql

Comento mi detalle.

Tengo esta consulta

SELECT c_ruta,c_id,REPLACE(c_nombre,',','') as 'c_nombre',ftm.f_total as 'f_total2015',ptm.p_total as 'p_total2015',(ftm.f_total-ptm.p_total) as 'Saldo_Inicial2016'
        FROM clientesamicsa.cliente
        LEFT JOIN (SELECT f_fecha,f_cliente,SUM(f_importe) as 'f_total' FROM factura WHERE f_fecha LIKE '%2015-%' GROUP BY f_cliente ORDER BY f_fecha DESC) as ftm ON cliente.c_id = ftm.f_cliente
        LEFT JOIN (SELECT p_cliente,SUM(p_importe) as 'p_total'    FROM pago WHERE p_fecha LIKE '%2015-%' GROUP BY p_cliente) as ptm ON cliente.c_id = ptm.p_cliente
        LEFT JOIN (SELECT domres_cliente,SUM(domres_importe) as 'pdom_total' FROM domiciliacionrespuesta WHERE domres_estatus = 'Aprobada' AND domres_fecha LIKE '%2015-%' GROUP BY domres_cliente) as pdom ON cliente.c_id = pdom.domres_cliente
        LEFT JOIN (SELECT pb_cliente,SUM(pb_importe) as 'pb_total' FROM pagobancos WHERE pb_fechapago LIKE '%2015-%' GROUP BY pb_cliente) as pb ON cliente.c_id = pb.pb_cliente
        LEFT JOIN (SELECT wstp_cliente,SUM(wstp_monto) as 'wstp_total' FROM pagostp WHERE wstp_creationdate LIKE '%2015-%' GROUP BY wstp_cliente) as stp ON cliente.c_id = stp.wstp_cliente
        LEFT JOIN (SELECT cliente,SUM(ROUND((((valor - 4) - (((valor - 4) * 0.039016)))),2)) as 'payu_total' FROM amicsaserver.transacciones WHERE transaction_date LIKE '%2015-%' AND state_pol = 4 AND test = 0 GROUP BY cliente) as payu ON cliente.c_id = payu.cliente
        WHERE c_tipo <> 1
        ORDER BY c_id

Me muestra el resultado asi:

Lo que quisiera es otra subconsulta o no se como llamarlo cambiándole solo el perdioso de 2015 a 2016 y así sucesivamente para que me aparezca así:

No se sei me alcanzo a explicar que me de las columnas por año así como tiempo subconsultas etc etc

Agradezxco mucho su atencioin y apoyo

1 Respuesta

Respuesta
1

Yo no afrontaría la petición de datos de ese modo, no se tampoco la vista final que vas a emplear, si solo quieres sacar en pantalla la consulta sin procesar los datos de algún modo tendrás que hacer un left join por cada año... un engorro bueno.

Ahora bien si planteas el asunto de otro modo con un consulta más simple lograras el mismo resultado, pero luego procesándolo correctamente podrás tener las columnas que buscas.

Como orientación porque no puedo leer los datos de tu SQL sin conocer las tablas a las que ataca y su estructura te diré que hagas un GROUP BY y uno de los campos sea el AÑO, de ese modo tendra un registros por año en la consulta, pero al procesarla podrás pasar esos años a columna sin problemas.

Te dejo un ejemplo muy muy simple.

https://onecompiler.com/mysql/3xrtwk3a4 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas