MySQL - consultar y devolver valores acumulados de columnas

 
Vista:
sin imagen de perfil

consultar y devolver valores acumulados de columnas

Publicado por Raul (1 intervención) el 08/05/2018 23:47:54
Estimados, tengo la siguiente duda, y quiero sabes si es posible realizar, me han entregado una tabla, donde los meses están en campos, y en cada uno cantidad de personas , ejemplo de tabla
id - ene - feb - mar - abr - may - jun - jul - ago - sep - oct - nov - dic
1
2
3

el caso es que quieren tener un valor acumulado ejemplo hasta abril, y que el resultado solo muestre los meses hasta el seleccionado, ejemplo, ene - feb - mar - abr - acumulado (ene+feb+mar+abr)

es posible realizar dicha acción y como ??
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 953
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

consultar y devolver valores acumulados de columnas

Publicado por leonardo_josue (414 intervenciones) el 09/05/2018 17:27:37
Hola Raul:

De que es posible hacer la consulta, es posible, sin embargo no va a ser una consulta trivial. Te sugiero que hagas un procedimiento almacenado (SP) para generar una consulta dinámica, y que trabajes con sentencias preparadas:

http://download.nust.na/pub6/mysql/doc/refman/5.0/es/sqlps.html

La ventaja de usar SP es que puedes hacer uso se sentencias de control como IF, o CASE WHEN para evaluar condiciones e ir armando una consulta de acuerdo a lo que necesites en este caso, los campos que pongas en el SELECT debe de estar en relación a tu parámetro, entonces, podrías tener una lógica más o menos así (pongo pseudocódigo, tendrías que hacer la lógica en MySQL)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
consulta = "SELECT ";
Si mes_parametro = 'ene'
  ENTONCES consulta = consulta + "ene, ene acumulado";
Si mes_parametro = 'feb'
  ENTONCES consulta = consulta + "ene, feb, ene + feb acumulado";
Si mes_parametro = 'mar'
  ENTONCES consulta = consulta + "ene, feb, mar, ene + feb + mar acumulado";
....
Si mes_parametro = 'dic'
  ENTONCES consulta = consulta + "ene, feb, mar, abr, may, ..., dic, ene  + feb + mar + abr  + may + ... + dic acumulado";
 
consulta = consulta + "FROM tu_tabla ... ";
 
ejecutar consulta;

Si necesitas hacer agrupaciones o SUM's o cualquier otra operación, puedes hacerlo sin ningún problema y al final simplemente ejecutas la consulta que armaste.

Haz la prueba y nos comentas.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar