if object_id('tempdb..#A') is not null drop table #A
select 'a' as Name,2007 as Year,100 as M
into #A
insert into #A select 'a'as Name,2008 as Year,400 as M
insert into #A select 'a'as Name,2009 as Year,600 as M
insert into #A select 'a'as Name,2010 as Year,800 as M
insert into #A select 'b'as Name,2007 as Year,150 as M
insert into #A select 'b'as Name,2008 as Year,250 as M
insert into #A select 'b'as Name,2009 as Year,450 as M
insert into #A select 'b'as Name,2010 as Year,650 as M
insert into #A select 'c'as Name,2007 as Year,700 as M
insert into #A select 'c'as Name,2008 as Year,800 as M
insert into #A select 'c'as Name,2009 as Year,850 as M
insert into #A select 'c'as Name,2010 as Year,950 as M
select * from #A
SELECT Name,Year,M,(
SELECT SUM(M)AS M FROM #A WHERE Name=T.Name AND Year<=T.Year)AS NUM
FROM #A T
ORDER BY Name ,Year