** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Consulta agrupada con MAX
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Consulta agrupada con MAX

 Responder Responder
Autor
Mensaje
majete Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 31/Marzo/2006
Localización: España
Estado: Sin conexión
Puntos: 659
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita majete Cita  ResponderRespuesta Enlace directo a este mensaje Tema: Consulta agrupada con MAX
    Enviado: 01/Abril/2019 a las 19:20
Hola a todos,
Quiero optimizar un proceso de cálculo con Consultas para que me ahorre un trabajo tremendo mes a mes y seguro que vosotros sabéis la solución. Tengo una tabla que recoge cada mes cerca de 10.000 registros distintos, y necesito sacar unos totales agrupados utilizando algún tipo de consulta SQL que entiendo es lo correcto. Los campos que me interesan para este ejemplo son:

[Pais][ContadorMes][HC][FTE]

Pais: Recoge el país del que provienen los datos
ContadorMes: Identifica el mes de los datos (es un número incremental entero)
HC: Valores 1 o 0
FTE: Es un número decimal

El objetivo es sacar el dato y los porcentajes de diferencia entre los dos últimos meses que aparezcan en el campo ContadorMes (se rellena mes a mes con un número que identifica al mes, y ya van por el 47, es decir, los dos últimos meses serían el 46 y el 47).

Os digo lo que he hecho pero seguro que se puede mejorar:
1. Creo una consulta para calcular la suma del FTE y del HC del último mes que aparezca en el campo ContadorMes

SELECT t.Pais, t.[ContadorMes] AS MesActual, Sum(t.FTE) AS FTEActual, Sum(t.[P UDM]) AS HCActual
FROM BD AS t
WHERE (((t.ContadorMes)=(SELECT MAX(ContadorMes)  FROM BD)))
GROUP BY t.Pais, t.[ContadorMes];

2. Hago lo mismo para calcular la suma del FTE y del HC pero esta vez del último mes menos uno, es decir del MAX(ContadorMes)-1.

3. Creo otra consulta donde unir estas dos anteriores para poder calcular las diferencias entre los campos "MesActual" y "MesAnterior", con lo que obtengo una tabla con esta estructura.

Pais - MesActualFTE - MesActualHC - MesAnteriorFTE - MesAnteriorHC - %DifHC - %DifFTE

Con esto obtengo todos los datos que necesito agrupados por País, pero me parece un poco chapuza y me gustaría mejorar el proceso de cálculo.

¿Se os ocurre algo mejor?
Muchas gracias!!
Juan Carlos



Editado por majete - 01/Abril/2019 a las 19:30
Arriba
majete Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 31/Marzo/2006
Localización: España
Estado: Sin conexión
Puntos: 659
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita majete Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 05/Abril/2019 a las 09:36
Hola de nuevo,
Cerramos tema porque veo que no tiene mucho éxito. el post.

Gracias a todos igualmente!!

Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 10816
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Mihura Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 05/Abril/2019 a las 10:13
Lanzando la consulta desde VBA se podían hacer 'más cosas':

- Supongamos que M1 y M2 tienen el valor de los dos meses que quieres agrupar

- Los registros los seleccionas con:
   WHERE ContadorMes IN (M1, M2)

- Para obtener los dos valores de una tacada usa la función IIF:
    SELECT  ...  Sum(IIF(ContadorMes=M1, FTE, 0)) AS SumFTEM1, Sum(IIF(ContadorMes=M2, FTE, 0)) AS SumFTEM2, ...


Tiene su aquel, LOL ... pero con una sola consulta lo sacas adelante.


Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
majete Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 31/Marzo/2006
Localización: España
Estado: Sin conexión
Puntos: 659
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita majete Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 08/Abril/2019 a las 08:52
Muchas gracias Mihura, algo así utilicé pero no me funcionaba... Probaré de nuevo con tu código.

Saludos y cerramos tema,
Juan Carlos
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable