T-SQL-按顺序每4个月计算一次平均值

时间:2019-06-08 00:54:03

标签: sql sql-server tsql

我有下表:

FromStr

我需要在Temp表的select语句中创建一列,该列创建一个称为Avg的附加列,该列将按顺序从Column2中获取值并将其除以(每4个月的数据平均值除以30)。 因此,例如

  • 第一个Avg值为2(来自Column2)/(Avg(1,2,3,4,5,6)(来自 数据列)/ 30)
  • 第二个Avg值为3 /(Avg(4,5,6,7)/ 30)
  • “第三平均”值为4 /(Avg(5,6,7,8)/ 30)

以此类推。

1 个答案:

答案 0 :(得分:1)

尝试Fiddle

select f1.*, 
case when f3.Average30=0 then null else f1.Column2 / f3.Average30 end as Avg
from mytable f1
outer apply
(
  select avg(cast(f2.Data as decimal))/30.0 as Average30
  from mytable f2
  where f2.MyDate between f1.Mydate and EOMONTH(DATEADD(MONTH, 3, f1.MyDate))

) f3