Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Calcular Promedio de 6 Meses

Estas en el tema de Calcular Promedio de 6 Meses en el foro de SQL Server en Foros del Web. Buenas Tardes... Tengo el siguiente query alli se calcula el consumo mensual, pero necesito calcular el promedio de 6 mes de un periodo de fecha ...
  #1 (permalink)  
Antiguo 15/03/2012, 14:41
 
Fecha de Ingreso: agosto-2008
Mensajes: 17
Antigüedad: 15 años, 8 meses
Puntos: 0
De acuerdo Calcular Promedio de 6 Meses

Buenas Tardes... Tengo el siguiente query alli se calcula el consumo mensual, pero necesito calcular el promedio de 6 mes de un periodo de fecha dado...
DECLARE @AÑO_ACTUAL SMALLINT
SET @AÑO_ACTUAL =2012
SELECT DISTINCT T0.ItemCode AS 'Código', T0.ItemName AS 'Descripción',
ISNULL((SELECT SUM(Y1.OutQty) FROM OINM Y1 WHERE Y1.ItemCode=T0.ITemCode AND YEAR(Y1.DocDate)>=@AÑO_ACTUAL AND MONTH(Y1.DocDate)<=1),0)'Enero',
ISNULL((SELECT SUM(Y1.OutQty) FROM OINM Y1 WHERE Y1.ItemCode=T0.ITemCode AND YEAR(Y1.DocDate)>=@AÑO_ACTUAL AND MONTH(Y1.DocDate)=2),0)'Febrero',
ISNULL((SELECT SUM(Y1.OutQty) FROM OINM Y1 WHERE Y1.ItemCode=T0.ITemCode AND YEAR(Y1.DocDate)>=@AÑO_ACTUAL AND MONTH(Y1.DocDate)=3),0)'Marzo',
ISNULL((SELECT SUM(Y1.OutQty) FROM OINM Y1 WHERE Y1.ItemCode=T0.ITemCode AND YEAR(Y1.DocDate)>=@AÑO_ACTUAL AND MONTH(Y1.DocDate)=4),0)'Abril',
ISNULL((SELECT SUM(Y1.OutQty) FROM OINM Y1 WHERE Y1.ItemCode=T0.ITemCode AND YEAR(Y1.DocDate)>=@AÑO_ACTUAL AND MONTH(Y1.DocDate)=5),0)'Mayo',
ISNULL((SELECT SUM(Y1.OutQty) FROM OINM Y1 WHERE Y1.ItemCode=T0.ITemCode AND YEAR(Y1.DocDate)>=@AÑO_ACTUAL AND MONTH(Y1.DocDate)=6),0)'Junio',
ISNULL((SELECT SUM(Y1.OutQty) FROM OINM Y1 WHERE Y1.ItemCode=T0.ITemCode AND YEAR(Y1.DocDate)>=@AÑO_ACTUAL AND MONTH(Y1.DocDate)=7),0)'Julio',
ISNULL((SELECT SUM(Y1.OutQty) FROM OINM Y1 WHERE Y1.ItemCode=T0.ITemCode AND YEAR(Y1.DocDate)>=@AÑO_ACTUAL AND MONTH(Y1.DocDate)=8),0)'Agosto',
ISNULL((SELECT SUM(Y1.OutQty) FROM OINM Y1 WHERE Y1.ItemCode=T0.ITemCode AND YEAR(Y1.DocDate)>=@AÑO_ACTUAL AND MONTH(Y1.DocDate)=9),0)'Septiembre',
ISNULL((SELECT SUM(Y1.OutQty) FROM OINM Y1 WHERE Y1.ItemCode=T0.ITemCode AND YEAR(Y1.DocDate)>=@AÑO_ACTUAL AND MONTH(Y1.DocDate)=10),0)'Octubre',
ISNULL((SELECT SUM(Y1.OutQty) FROM OINM Y1 WHERE Y1.ItemCode=T0.ITemCode AND YEAR(Y1.DocDate)>=@AÑO_ACTUAL AND MONTH(Y1.DocDate)=11),0)'Noviembre',
ISNULL((SELECT SUM(Y1.OutQty) FROM OINM Y1 WHERE Y1.ItemCode=T0.ITemCode AND YEAR(Y1.DocDate)>=@AÑO_ACTUAL AND MONTH(Y1.DocDate)=12),0)'Diciembre',
ISNULL((SELECT SUM(Y1.OutQty) FROM OINM Y1 WHERE Y1.ItemCode=T0.ITemCode AND YEAR(Y1.DocDate)=@AÑO_ACTUAL),0)'Total',
ISNULL((SELECT SUM(Y1.OutQty) FROM OINM Y1 WHERE Y1.ItemCode=T0.ITemCode AND YEAR(Y1.DocDate)=@AÑO_ACTUAL)/3,0)'Promedio 3M' ?---NECESITO SOLO SUMAR LOS ULTIMOS SEIS O TRES MESES Y SACAR EL PROMEDIO DIVIDIRLO ENTRE 3 O 6
FROM OITM T0
WHERE T0.DfltWH = '001'
ORDER BY T0.ItemCode
  #2 (permalink)  
Antiguo 15/03/2012, 15:33
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Calcular Promedio de 6 Meses

Porque no lo haces con un case?? estas repitiendo un query 12 veces que seria mejor hacer con un case, otra cosa si sacas todos los meses, porque no nada mas lo haces para los que necesitas? digo en lugar de hacerlo para 12 lo haces para 6 o para 3, si lo quieres hacer nada mas en un solo paso puedes probar:



Código SQL:
Ver original
  1. ISNULL((SELECT SUM(Y1.OutQty) FROM OINM Y1 WHERE Y1.ItemCode=T0.ITemCode
  2. AND YEAR(Y1.DocDate)>=@AÑO_ACTUAL AND MONTH(Y1.DocDate) beetween 1 AND 6),0)'Semestre'
  3.  
  4. ISNULL((SELECT SUM(Y1.OutQty) FROM OINM Y1 WHERE Y1.ItemCode=T0.ITemCode AND YEAR(Y1.DocDate)>=@AÑO_ACTUAL AND MONTH(Y1.DocDate) beetween 1 AND 3),0)'Trimestre'

ya que si quieres puedes obtener el mes actual con un

declare @mes_actual int
select @mes_actual=datepart(mm,getdate())
y en el query
Código SQL:
Ver original
  1. ISNULL((SELECT SUM(Y1.OutQty) FROM OINM Y1 WHERE Y1.ItemCode=T0.ITemCode AND YEAR(Y1.DocDate)>=@AÑO_ACTUAL AND MONTH(Y1.DocDate) beetween @mes_actual AND @mes_actual+3),0)'Trimestre'
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 16/03/2012, 06:45
 
Fecha de Ingreso: agosto-2008
Mensajes: 17
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Calcular Promedio de 6 Meses

Gracias por tu respuesta... Voy a tratar de ver y ejecutarla... Aca requiere ver el consumo mensual por eso estan los 12 meses... Y el promerio es de los ultimos tres menes o ultimos 6 meses... Se necesita el total de lo que va... Gracias por tu ayuda...
  #4 (permalink)  
Antiguo 19/03/2012, 14:32
 
Fecha de Ingreso: agosto-2008
Mensajes: 17
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Calcular Promedio de 6 Meses

Hola... Estuve con la modificacion del query hay momentos en que me piden periodos de fecha Ejm: Desde 01/01/2011 al 31/05/2011 para ese periodo de fecha solo hay un trimestre y deseo el consumo de los ultimos 3 meses, que seria mayo, abril y marzo deseo el consumo por tolos los meses transcurridos en el periodo dado... Por eso es que repito 12 query ya que necesito en consumo de los medes del periodo solicitado... En realidad nose como adaptarlo al requerimiento solicitado... Porfa si me puedes ayudar.... Y muchas gracias....

Etiquetas: fecha, meses, promedio, select, calculadora
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:12.