我在长/高格式的 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