次のような形式の SQL テーブルがあります。
8/1/2012 0.111
8/2/2012 0.222
8/5/2012 0.333
.
.
.
指定した日付範囲の 2 番目の列の平均値を取得するクエリを実行したいと考えています。存在しない日付 (上記の表の 2012 年 8 月 3 日と 2012 年 8 月 4 日) については、欠落している日付に最後の既知の値 (0.222) を使用したいと考えています。どうすればこれを行うことができますか?
次のような形式の SQL テーブルがあります。
8/1/2012 0.111
8/2/2012 0.222
8/5/2012 0.333
.
.
.
指定した日付範囲の 2 番目の列の平均値を取得するクエリを実行したいと考えています。存在しない日付 (上記の表の 2012 年 8 月 3 日と 2012 年 8 月 4 日) については、欠落している日付に最後の既知の値 (0.222) を使用したいと考えています。どうすればこれを行うことができますか?
編集:申し訳ありませんが、これが実際に機能すると初めて思ったときに質問を理解できなかったと思います(テスト済み)
私がしたこと:
このテーブルは値を持つテーブルと結合され、平均が計算されます
CREATE TABLE #Table1 (date_column DateTime, Value Decimal(5,4))
INSERT INTO #Table1 VALUES ('20120804', 0.1234)
INSERT INTO #Table1 VALUES ('20120808', 0.2222)
INSERT INTO #Table1 VALUES ('20120809', 0.9876)
INSERT INTO #Table1 VALUES ('20120812', 0.0505);
WITH Dates(date_column , row )
AS (SELECT Cast('20120804' as datetime) date_column, 0 as row
UNION ALL
SELECT DateAdd(Day, 1, date_column), row + 1
FROM Dates
WHERE date_column < '20120830'
)
SELECT AVG(Value) FROM (
SELECT Dates.date_column, (SELECT MAX(date_column)
FROM #Table1 WHERE #Table1.date_column <= Dates.date_column) maxDateWithValue
FROM Dates
) AllDatesWithLastDateWithValue
LEFT JOIN #Table1 ON AllDatesWithLastDateWithValue.maxDateWithValue = #Table1.date_column
WHERE AllDatesWithLastDateWithValue.date_column >= '20120804'
AND AllDatesWithLastDateWithValue.date_column <= '20120815'
これが役に立てば幸いです...いい質問です...