Я бы пошел на GROUP BY без объединения (вероятно, наиболее эффективно, так как в каждой таблице один проход - предложение GROUP BY будет дуплицировать):
select id, name, max(jan) jan, max(feb) feb, /*...*/ max(dec) dec
from (select id, name, jan jan, null feb, /*...*/ null dec
from table1
union all
select id, name, null jan, feb feb, /*...*/ null dec
from table2
union all
/*...*/
select id, name, null jan, null feb, /*...*/ dec dec
from table12)
group by id, name