PostgreSQL 9.3
offre des fonctions JSON soignées qui peuvent être utilisées pour de telles tâches sans définir de nouvelles fonctions ou connaître un certain nombre de colonnes.
SELECT id, (k).key as year, (k).value as value FROM
(SELECT j->>'id' as id, json_each_text(j) as k
FROM (
SELECT row_to_json(tbl) as j FROM tbl)
as q)
as r
WHERE (k).key <> 'id';
http://sqlfiddle.com/#!15/1714b/13