我在SQLServer 2008中创建了一个sql函数,它声明了一个临时表,并使用它来计算内部值的移动平均值
declare @tempTable table
(
GeogType nvarchar(5),
GeogValue nvarchar(7),
dtAdmission date,
timeInterval int,
fromTime nvarchar(5),
toTime nvarchar(5),
EDSyndromeID tinyint,
nVisits int
)
insert @tempTable select * from aces.dbo.fEDVisitCounts(@geogType, @hospID,DATEADD(DD,-@windowDays + 1,@fromDate),
@toDate,@minAge,@maxAge,@gender,@nIntervalsPerDay, @nSyndromeID)
INSERT @table (dtAdmission,EDSyndromeID, MovingAvg)
SELECT list.dtadmission
, @nSyndromeID
, AVG(data.nVisits) as MovingAvg
from @tempTable as list
inner join @tempTable as data
ON list.dtAdmission between data.dtAdmission and DATEADD(DD,@windowDays - 1,data.dtAdmission)
where list.dtAdmission >= @fromDate
GROUP BY list.dtAdmission
Run Code Online (Sandbox Code Playgroud)
但我也发现你可以像这样声明tempTable:
with tempTable as
(
select * from …Run Code Online (Sandbox Code Playgroud) 我需要做类似的事情:
SELECT value_column1
FROM table1
WHERE datetime_column1 >= '2009-01-01 00:00:00'
ORDER BY datetime_column1;
Run Code Online (Sandbox Code Playgroud)
除此之外value_column1,我还需要检索前20个值的移动平均值value_column1.
标准SQL是首选,但如果需要,我将使用MySQL扩展.