4

我想在我的选择语句中为一堆值列合并两个平均计算。

请参阅此链接了解我的简化表结构,包括所需的输出计算:Pastebin

1)移动平均线:

Month1 = 该月的 value1 列的值,Month2 = 如果 sum == 0 则写入 0,否则为 avg(Month1 和 Month2),依此类推。

因此,对于每种产品,我想要一年内每个月的移动平均值。我在我的 Excel 中设置了这个,但我无法将表达式传输到 sql。

2) 总体平均:

对于每个产品,计算所有年份的平均值并将计算值复制到该产品的所有行。

我希望你能帮我解决这个问题。看起来我需要一个程序,但也许它只是一个简单的陈述。

4

1 回答 1

5

SQL-Server 2012 支持执行此操作所需的分析函数:

SELECT  Product,
        Month,
        Year,
        Value,
        AVG_YTD = AVG(Value) OVER(PARTITION BY Year ORDER BY Month),
        AVG_Year = AVG(Value) OVER(PARTITION BY Product, Year),
        AVG_Overall = AVG(Value) OVER(PARTITION BY Product)
FROM    T;

SQL Fiddle 的简化示例

于 2013-03-06T08:18:14.353 回答