Another way to do it (proof of concept, change names as needed):declare @t table(company varchar(10), date datetime, shareprice money)insert @t values('ABC', '1/1/2010', 2.75)insert @t values('ABC', '3/6/2010', 3.90)insert @t values('ABC', '5/8/2010', 4.85)insert @t values('ABC', '7/10/2010', 7.45)insert @t values('ABC', '9/15/2010', 3.73)insert @t values('ABC', '10/30/2010', 5.75)insert @t values('ABC', '11/4/2010', 8.75)insert @t values('Acme', '1/1/2010', 2.475)insert @t values('Acme', '4/6/2010', 3.755)insert @t values('Acme', '4/8/2010', 8.765)insert @t values('Acme', '5/10/2010', 3.475)insert @t values('Acme', '7/15/2010', 6.75)insert @t values('Acme', '9/18/2010', 11.65)insert @t values('Acme', '10/26/2010', 8.75)select company, avg(case when date between getdate()-7 and getdate() then shareprice end) weekly_avg,avg(case when year(date)=year(getdate()) then shareprice end) yearly_avgfrom @tgroup by company