Maybe you can do something with a CTE like the following...
DECLARE @Tbl AS TABLE (
Symbol INT,
MarketDate DATETIME,
Price DECIMAL(10,2),
Volume INT
)
INSERT INTO @Tbl
VALUES (1, '1/1/2008', 1.00, 100000)
INSERT INTO @Tbl
VALUES (1, '1/2/2008', .98, 105000)
INSERT INTO @Tbl
VALUES (1, '1/3/2008', 1.01, 110000)
INSERT INTO @Tbl
VALUES (1, '1/4/2008', 1.02, 120000)
INSERT INTO @Tbl
VALUES (1, '1/5/2008', 1.12, 125000)
INSERT INTO @Tbl
VALUES (1, '1/6/2008', 1.14, 135000)
INSERT INTO @Tbl
VALUES (1, '1/7/2008', 1.10, 150000)
INSERT INTO @Tbl
VALUES (1, '1/8/2008', 1.12, 100000)
INSERT INTO @Tbl
VALUES (1, '1/9/2008', 1.12, 175000)
INSERT INTO @Tbl
VALUES (2, '1/2/2008', 1.22, 1000100)
INSERT INTO @Tbl
VALUES (2, '1/5/2008', 1.24, 1123000)
INSERT INTO @Tbl
VALUES (2, '1/7/2008', 1.25, 1085000)
INSERT INTO @Tbl
VALUES (2, '1/17/2008', 1.25, 9999999);
--SELECT *
--FROM @Tbl;
WITH WeekTable (Symbol, MarketDate, Volume)
AS
(
SELECT T1.Symbol,
T1.MarketDate,
T2.Volume
FROM @Tbl T1
INNER JOIN @Tbl T2 ON
(T1.Symbol = T2.Symbol
AND T2.MarketDate <= T1.MarketDate
AND T2.MarketDate > DATEADD(WEEK, -1, T1.MarketDate))
)
SELECT Symbol,
MarketDate,
AVG(Volume) [RollVol]
FROM WeekTable
GROUP BY Symbol, MarketDate