4

select ステートメントに一連の値列の 2 つの平均計算を組み込みたいと考えています。

目的の出力計算を含む単純化されたテーブル構造については、このリンクを参照してください: Pastebin

1) 移動平均:

Month1 = その月の value1 列の値。Month2 = sum == 0 の場合は 0 を書き込み、そうでない場合は avg(Month1 and Month2) など。

したがって、各製品について、1 年以内の各月の移動平均が必要です。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 に答える