Il problema che poni non è affatto banale, soprattutto viste le limitazioni che Access impone. In un database più "robusto" questa necessità si poteva affrontare più semplicemente e rapidamente ricorrendo all'uso di tabelle temporanee o funzioni UDF.
Quello che segue è uno script realizzato con SQL Server. Dovresti riuscire ad adattare l'istruzione SQL di selezione al tuo caso senza troppa difficoltà:
create table #t(
ide int identity(1,1) primary key,
nome varchar(255) ,
numero int,
anno int
)
insert #t select 'A', 10, 2005
insert #t select 'B', 15, 2005
insert #t select 'C', 18, 2006
insert #t select 'D', 8, 2005
insert #t select 'A', 13, 2006
insert #t select 'B', 2, 2006
insert #t select 'D', 3, 2006
insert #t select 'A', 1, 2006
select isnull(t.nome, t2.nome) as nome, isnull(t.numero, 0) as anno_2005, isnull(t2.numero, 0) as anno_2006
from (select * from #t where anno=2005) t
full outer join (select nome, sum(numero) as numero, anno from #t group by nome, anno having anno=2006) t2
on t.nome = t2.nome
drop table #t