Dein right join bezieht sich nur auf die Artikel ID. Es werden also auch Artikel angezeigt, die auf der einen Seite nicht vorhanden sind.
Die Where Clause mit Jahreseinschränkung hat damit nichts zu tun.
Aus dem
SQL geht mangels Spaltenalias auch nicht hervor, woher das Jahr kommt.
Um sicherzugehen, dass die gewünschten Jahre immer dabei sind, könnte man sie als separate Liste/Select/View einbinden und dort dann mit Outer Join zum Artikeljahr verbinden (Pivot Verfahren).
Also in die From Clause eine 3.Menge mit den Jahren rein. Z.B. so für firebird(?):
Code:
(select 2011 as Jahr from RDB$DATABASE
union all
select 2012 from RDB$DATABASE) as Jahre