我有一个格式如下的 SQL 表:
8/1/2012 0.111
8/2/2012 0.222
8/5/2012 0.333
.
.
.
我想运行一个查询,该查询将在指定日期范围内获取第二列中的平均值。对于不存在的日期(上表中的 8/3/2012 和 8/4/2012),我想使用最后一个已知值 (0.222) 作为缺失日期。我该怎么做呢?
我有一个格式如下的 SQL 表:
8/1/2012 0.111
8/2/2012 0.222
8/5/2012 0.333
.
.
.
我想运行一个查询,该查询将在指定日期范围内获取第二列中的平均值。对于不存在的日期(上表中的 8/3/2012 和 8/4/2012),我想使用最后一个已知值 (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'
希望这会有所帮助...好问题...