2016-04-04 4 views
0

を計算するために自己結合を利用しようとしています。以下のコードは、ティッカーと日付ごとに変わるユニークな結果を提供するのではなく、すべてのティッカーと日付の平均を提供するようです。 (言い換えれば、出力の3番目の列はすべて同じになりますが、各行は実際には一意である必要があります)。自己結合を使用して過去のローリング平均を計算する方法

こちらのアドバイスはありますか?ありがとうございます

SELECT [Ticker], [Date], 
(SELECT AVG(T.[Close]) 
FROM [intradayOHLC_Selected_Closing_Prices_Staging] AS T 
JOIN [intradayOHLC_Selected_Closing_Prices_Staging] AS O2 
ON T.[Ticker] = O2.[Ticker] 
AND T.[Date] between O2.[Date 250 Days Ago] AND O2.[Date]) 
FROM [intradayOHLC_Selected_Closing_Prices_Staging] AS O2 
+0

どのデータベースをお使いですか? –

+0

ありがとうございました。これは完璧です – Treyvon

+0

あなたの質問に答えて、これはSQL Server 2012と自分の財務データベースです。ありがとう – Treyvon

答えて

0

サブクエリに余分な数字があります(JOIN)。これは必要ではありません。相関サブクエリが必要です。

SELECT [Ticker], [Date], 
     (SELECT AVG(T.[Close]) 
     FROM [intradayOHLC_Selected_Closing_Prices_Staging] AS T 
     WHERE T.[Ticker] = O2.[Ticker] AND 
       T.[Date] between O2.[Date 250 Days Ago] AND O2.[Date] 
     ) as RollingAverage 
FROM [intradayOHLC_Selected_Closing_Prices_Staging] AS O2; 
関連する問題