• Here you go..

    -- Creating table

    CREATE TABLE year_week_value

    (

    year INT,

    week INT,

    value INT

    );

    -- Inserting test values

    INSERT year_week_value

    VALUES

    (2011,49,3000),

    (2011,50,5000),

    (2011,51,6000),

    (2011,52,7000),

    (2012,1,3000),

    (2012,2,5000),

    (2012,3,6000),

    (2012,4,7000),

    (2012,5,8000),

    (2012,6,9000),

    (2012,7,1000),

    (2012,8,6000);

    -- Resultant query

    SELECT a.year,

    a.week,

    .25 * ( Isnull(b.value, 0) + Isnull(c.value, 0)

    + Isnull(d.value, 0) + Isnull(e.value, 0) ) AvgVal

    FROM year_week_value a

    LEFT JOIN year_week_value b

    ON b.year = Year(Dateadd(wk, a.week - 2, Dateadd(year, a.year - 1900, 0)))

    AND b.week = Datepart(wk, Dateadd(wk, a.week - 2, 0))

    LEFT JOIN year_week_value c

    ON c.year = Year(Dateadd(wk, a.week - 3, Dateadd(year, a.year - 1900, 0)))

    AND c.week = Datepart(wk, Dateadd(wk, a.week - 3, 0))

    LEFT JOIN year_week_value d

    ON d.year = Year(Dateadd(wk, a.week - 4, Dateadd(year, a.year - 1900, 0)))

    AND d.week = Datepart(wk, Dateadd(wk, a.week - 4, 0))

    LEFT JOIN year_week_value e

    ON e.year = Year(Dateadd(wk, a.week - 5, Dateadd(year, a.year - 1900, 0)))

    AND e.week = Datepart(wk, Dateadd(wk, a.week - 5, 0))

    ORDER BY a.year,

    a.week

    ~ Lokesh Vij


    Guidelines for quicker answers on T-SQL question[/url]
    Guidelines for answers on Performance questions

    Link to my Blog Post --> www.SQLPathy.com[/url]

    Follow me @Twitter