PostgreSQL 9.3
bietet als ordentliche JSON-Funktionen an, die für solche Aufgaben verwendet werden können, ohne neue Funktionen zu definieren oder eine Anzahl von Spalten zu kennen.
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