PostgreSQL 9.3
oferece funções JSON tão organizadas que podem ser usadas para tais tarefas sem definir novas funções ou conhecer um número de colunas. 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