質問を簡単にするために、セキュリティごとの四半期の日付と販売数の表があるとします。
month_end_date、ID、Sales
IDごとの売上の4四半期移動平均を計算する必要があります。私は次のことをしようとしました:
-- CALCULATE FOUR QUARTER AVERAGES
-- CREATE INDEX OF DATES
SELECT *, date_idx=RANK() OVER(PARTITION BY ID ORDER BY month_end_date)
INTO #Temp_Date_Index
FROM #Temp_industrials
GO
CREATE INDEX idx_1 on #Temp_Date_Index(ID, date_idx)
GO
-- CALCULATE MOVING AVERAGE
SELECT MAX(month_end_date), ID, Sales_avg=AVG(Sales)
INTO #Temp_4Q_Avgs
FROM #Temp_Date_Index
WHERE date_idx>=4 AND (date_idx BETWEEN date_idx AND (date_idx-4))
GROUP BY ID
日付のインデックスを作成する最初のステップは正常に機能しましたが、「CALCULATE MOVING AVERAGE」の部分で、「オブジェクトまたは列の名前が見つからないか空です」というエラーが表示されます。MAX(month_end_date)
SELECT行からを取り出すと、エラーなしで実行されますが、空のテーブル結果が得られます。
おそらく私のアプローチは根本的に欠陥があります。
助けてくれてありがとう。
サブクエリも使用してみました:
SELECT end_of_period=MAX(month_end_date), ID,
op_inc_avg=AVG(
SELECT r.Sales
FROM #Temp_Date_Index r
WHERE r.date_idx BETWEEN l.date_idx AND (l.date_idx-3)
)
FROM #Temp_Date_Index l WHERE r.date_idx> = 4 GROUP BY ID
しかし、私は得ています
メッセージ156、レベル15、状態1、行3キーワード「SELECT」の近くの構文が正しくありません。メッセージ102、レベル15、状態1、行6')'の近くの構文が正しくありません。