Access - Obtener el Max de una columna los ultimos 12 meses

 
Vista:

Obtener el Max de una columna los ultimos 12 meses

Publicado por Luis Bonilla (1 intervención) el 30/04/2018 22:01:58
Buenas,

Actualmente estoy intentando obtener el mayor saldo de los últimos 12 meses, la formula que he estado utilizando es: SELECT tabla.Cliente, tabla.FECHA, Max(tabla.Saldo) AS [MáxSaldo]
FROM tabla
WHERE tabla.[FECHA] Between tabla.[FECHA] AND DateSerial(Year([tabla].[FECHA])-1,Month([tabla].[FECHA]),Day([tabla].[FECHA]))
GROUP BY tabla.Cliente, tabla.FECHA;

He hecho muchas versiones de este query tratando de obtener los resultados sin embargo no he podido lograrlo, agradezco de su apoyo.

Saludos


Fecha - Cliente- Saldo- Saldo_Maximo_Ejemplo
01/01/2000 -José -100 - 100
01/02/2000 -José -125 - 125
01/03/2000 -José -100 - 125
01/04/2000 -José -130 - 130
01/05/2000 -José -134 - 134
01/06/2000 -José -546 - 546
01/07/2000 -José -54 - 546
01/08/2000 -José -597 - 597
01/09/2000 -José -697 - 697
01/10/2000 -José -643 - 697
01/11/2000 -José -318 - 697
01/12/2000 -José -432 - 697
01/01/2001 -José -318 - 697
01/02/2001 -José -432 - 697
01/03/2001 -José -134 - 697
01/04/2001 -José -546 - 697
01/05/2001 -José -546 - 697
01/06/2001 -José -54 - 697
01/07/2001 -José --597- 697
01/08/2001 -José -100 - 697
01/09/2001 -José -125 - 697
01/10/2001 -José -546 - 697
01/11/2001 -José -546 - 697
01/12/2001 -José -54 - 697
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

Obtener el Max de una columna los ultimos 12 meses

Publicado por Anonimo (3322 intervenciones) el 01/05/2018 23:24:01
Se obtendría un mayor control sobre las fechas, si en lugar de Between se utilizase >= y <= (between y las fechas no son muy sociables).

Lo que no queda claro es la agrupación que se necesita, si se agrupa por fecha (la que se guarde en la tabla), aparecerán todas aquellas que sean diferentes (incluso si hay datos adecuados, un resultado por día).

Si se filtra por un periodo (sea referenciado a una fecha concreta o a la fecha vigente) y se agrupa por cliente, se obtendría un único valor máximo de todo el periodo.

De desear una agrupación mensual, seria el momento de generar el valor calculado de mes y añadirlo a la agrupación

Una SQL que devolvería el máximo del periodo para ese conjunto de datos de ese cliente (y mas de un cliente si lo hay) seria algo como esto (generada con el asistente de Access):

SELECT Datos.Cliente, Max(Datos.Saldo) AS MáxDeSaldo
FROM Datos
WHERE (((Datos.Fecha)>=#5/1/2000# And (Datos.Fecha)<#5/1/2001#))
GROUP BY Datos.Cliente;

Aunque si se toma la fecha actual para el calculo, podría ser algo como esto:

SELECT Cliente, Max(Saldo) AS MáxDeSaldo FROM Datos WHERE [Fecha]>= DateAdd("yyyy",-1,Date()) And [Fecha]< Date() GROUP BY Cliente
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