SQL - sumar 3 ultimos meses en una vista

 
Vista:

sumar 3 ultimos meses en una vista

Publicado por pamela (4 intervenciones) el 21/01/2015 07:21:55
Hola,
Me ayudan please a crear una consulta,

Tengo esta vista de una tabla :
mes annio promedio SUM_3UltimosMeses
Jan 2014 37 37
Feb 2014 9 46 (sum 37 + 9)
Mar 2014 20 66 (sum 37 + 9+ 20)
Apr 2014 19 48 (sum 9 + 20 + 19)
...y asi sucesivamente

Necesito crear el campo SUM_3UltimosMeses, no se como hacerlo :D... la idea es que para Marzo sume los promedios de enero, feb y mar, para ABril sume los promedios de feb, mar y abril... y asi sucesivamente.


Gracias de antemano! :)
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: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

sumar 3 ultimos meses en una vista

Publicado por leonardo_josue (1173 intervenciones) el 21/01/2015 17:25:20
Hola Pamela:

Antes que nada me gustaría saber qué fue lo que intentaste hacer para resolver la consulta, porque intentaste hacer la consulta ¿cierto?

Siempre que abras una nueva pregunta en este o cualquier otro foro de consulta debes incluir el código que intentaste hacer, no importa que esté incompleto o equivocado. A partir de este código podemos indicarte los errores o en su defecto plantearte algún otro camino para tratar de resolverla.

De entrada hay varias cosas que debes cuidar y/o cambiar:

1. Tu campo MES, ¿de qué tipo es? tal como lo pones puedo suponer que se trata de un campo VARCHAR, lo cual es un ERROR MUY GRANDE, siempre que manejes fechas DEBES UTILIZAR CAMPOS TIPO FECHA, de hecho no lo veo mucho sentido a que guardes en un campo el mes y en otro separado el año, es un completo desperdicio de recursos.

Si los meses los almacenas como VARCHAR, tienes el problema que no hay forma "directa" de decir que JAN va antes que APR, tendrías que hacer una conversión para poder determinar el orden de los meses antes de hacer los cálculos.

2. ¿Sólo tienes una entrada por mes? en tus datos de ejemplo así es, pero no sé si en realidad puedas tener más de una entrada por mes...

3. tu consulta en realidad es bastante simple, puedes resolverla con una subconsulta, algo así:

1
2
3
4
5
6
SELECCIONA
   mes,
   año,
   ( SELECCIONA la suma de los promedios
     DEL LA TABLA donde el año sea el mismo y el mes esté entre el mes actual o tres meses antes)
DE LA TABLA


Trata de convertir el pseudocodigo a una consulta SQL 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

sumar 3 ultimos meses en una vista

Publicado por Pamela (4 intervenciones) el 27/01/2015 01:52:48
Hola Leo,
Gracias por tu respuesta,
Respondiendo tus puntos:
1. El campo mes es tipo fecha, lo mismo que el annio, no los guardo por separado, solo debo mostrarlos de esta forma.
2. Por cada annio tengo solo una entrada por mes.
3. TRato de hacer la consulta que me dices pero resulta un error, hago lo siguiente:

Select Customer, [Year], [Month], AVG(Volumes) as AvgTests,

(select SUM(AVG(volumes)) from Mitabla where [MONTH] Between [Month] and ([Month]-2)) as SUM_3UltimosMeses

FROM MiTabla
group by Customer, [Month], [Year]

con esto tengo este error: "Cannot perform an aggregate function on an expression containing an aggregate or a subquery." Uso SQL 2008.


Como mencione antes, necesito crear el campo SUM_3UltimosMeses, la idea es que para Marzo sume los promedios de enero, feb y mar, para Abril sume los promedios de feb, mar y abril... y asi sucesivamente.

Te agradezco la ayuda!! :)
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