平均10个月

时间:2011-04-01 23:31:31

标签: sql-server

我正在用Microsoft SQL Server 2008数据库替换Excel电子表格,需要计算:

=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 个答案:

答案 0 :(得分: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