我正在用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
答案 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