2011-04-01 104 views
0

我与Microsoft SQL Server 2008数据库代替Excel电子表格和需要计算这样的:10月平均

=AVERAGE(IF((A:A>A4-304)*(A:A<=A4),G:G)) 

其中A列是日期和G列的值。 此字段的标题是:

10个月简单移动平均

我想我会使用类似:

SELECT RawData.* 
,(SELECT Sum(X.AdjClose) AS SumAdjClose 
    FROM RawData X 
    WHERE DATEDIFF(d,X.RawDate,RawData.RawDate) <= 304 
) AS SumAdjClose 
FROM RawData 

回答

1

在SQL Server中一个选项是使过滤器在WHERE条款和平均在SELECT

select avg(ValueCol) 
from Table1 
where DateCol between @Date-304 and @Date 

另一种选择,在Excel中相同的逻辑可能是:

select avg(case when DateCol between @Date-304 and @Date then ValueCol else null) 
from Table1 
+0

我不得不“DATEADD(d,-304,@日期)和@date间”使用,但感谢您的指导! – 2011-04-02 16:14:19