Les tableaux croisés ou les tableaux croisés dynamiques sont la réponse. De là, vous pouvez SELECT FROM ... INSERT INTO ... ou créer une VIEW à partir du seul SELECT.
Quelque chose comme :
SELECT country,
MAX( IF( key='President', value, NULL ) ) AS President,
MAX( IF( key='Currency', value, NULL ) ) AS Currency,
...
FROM table
GROUP BY country;
Pour plus d'informations :http://dev.mysql.com/tech -ressources/articles/assistant/index.html