Mysql, изменить данные от длинного / высокого к широкому
У меня есть данные в таблице mysql в длинном / высоком формате (описано ниже) и я хочу преобразовать их в широкий формат. Могу ли я сделать это, используя только sql?
Проще всего объяснить на примере. Предположим, у вас есть информация (страна, ключ, значение) для M стран, N ключей (например, ключами могут быть доход, политический лидер, регион, континент и т. Д.)
Long format has 3 columns: country, key, value
- M*N rows.
e.g.
'USA', 'President', 'Obama'
...
'USA', 'Currency', 'Dollar'
Wide format has N=16 columns: county, key1, ..., keyN
- M rows
example:
country, President, ... , Currency
'USA', 'Obama', ... , 'Dollar'
Есть ли способ в SQL создать новую таблицу с данными в широком формате?
select distinct key from table;
// это даст мне все ключи.
1) Как мне тогда создать таблицу, используя эти ключевые элементы?
2) Как мне тогда заполнить таблицу значений?
Я почти уверен, что могу сделать это с любым языком сценариев (мне нравится python), но я хотел знать, есть ли простой способ сделать это в mysql. Многие статистические пакеты, такие как R и STATA, имеют встроенную команду, потому что она часто используется.
======
Чтобы быть более понятным, вот желаемый входной вывод для простого случая:
Входные данные:
country attrName attrValue key (these are column names)
US President Obama 2
US Currency Dollar 3
China President Hu 4
China Currency Yuan 5
Выход
country President Currency newPkey
US Obama Dollar 1
China Hu Yuan 2