) вы можете изменить данные таблицы.

дал функцию SQL вSQLServer 2008 который объявил временную таблицу и использует ее для вычисления скользящего среднего по значениям внутри

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

но я также узнал, что вы можете объявить шаблон так:

with tempTable as 
(
    select * from aces.dbo.fEDVisitCounts('ALL', null,DATEADD(DD,-7,'01-09-2010'),
        '04-09-2010',0,130,null,1, 0)
)

Вопрос: Есть ли существенная разница в этих двух подходах? Один быстрее другого или более распространенный / стандартный? Я думаю, что объявление быстрее, так как вы определяете, какие столбцы вы ищете. Было бы еще быстрее, если бы я опускал столбцы, которые не использовались в вычислениях скользящего среднего? (Не уверен насчет этого так как он должен получить все строки в любом случае, хотя выбор меньшего количества столбцов имеет интуитивный смысл, что это будет быстрее / меньше)

Я также нашелcreate temporary table @table отсюдаКак объявить внутреннюю таблицу в MySQL? но я не хочу, чтобы таблица сохранялась вне функции (я не уверен, делает ли это временную таблицу create).

Ответы на вопрос(3)

Ваш ответ на вопрос