Odpowiedzią są tabele krzyżowe lub tabele przestawne. Stamtąd możesz WYBIERZ Z ... WSTAW DO ... lub utworzyć WIDOK z pojedynczego WYBIERZ.
Coś takiego:
SELECT country,
MAX( IF( key='President', value, NULL ) ) AS President,
MAX( IF( key='Currency', value, NULL ) ) AS Currency,
...
FROM table
GROUP BY country;
Więcej informacji:http://dev.mysql.com/tech -resources/articles/wizard/index.html