mySQL,二维到一维

时间:2016-09-05 00:16:41

标签: mysql arrays excel

我已经忘记了我曾经知道的有关枢轴的任何事情,但这在我看来恰恰相反。假设我有一组项目A,B,C,D ......以及属性列表W,X,Y,Z。我在电子表格中有类似

的内容
    A    B    C    D
W   1    P    3    Q
X   5    R    7    S
Y   T    2    U    4
Z   D    6    F    7

其中项目B的属性X的值为“P”。为了做一些关于比较的统计数据,我想在表格之间进行更改,即

W    A    1
X    A    5
Y    A    T
Z    A    D
W    B    P
X    B    R
Y    C    U
Z    C    F
W    D    Q
X    D    S
Y    B    2
Z    B    6
Etc.

我可以轻松地在电子表格中编写嵌套循环宏来实现它,但是有一种简单的方法可以将它以所需的格式导入到mySQL中吗?如果数据采用第二种格式,那么获取所需统计信息的查询在SQL中很简单(并且电子表格中的公式也不是很难)。

由于显然没有“电子表格”标签,我使用了“excel”。 : - )

有很多问题乍一看看起来很相似,但我看到的五个问题都想丢弃其中一个指数(AD或WZ),即创建类似

W   1
W   P
X   5
X   R

1 个答案:

答案 0 :(得分:1)

<强> EDITED

您可以使用PowerQuery来移动表格。请参阅teylyn的回答以获得以下问题。我有Office 365,并且不需要先安装插件。该功能已经可用。

Convert matrix to 3-column table ('reverse pivot', 'unpivot', 'flatten', 'normalize')

  

在不使用VBA的情况下展开数据的另一种方法是使用PowerQuery,这是Excel 2010及更高版本的免费插件,可在此处找到:http://www.microsoft.com/en-us/download/details.aspx?id=39379

     

...

     

单击第一列的列标题以将其选中。然后,在“变换”功能区上,单击“未透视列”下拉列表,然后选择“取消透视其他列”。

     

...

OLD ANSWER

如果按原样导入电子表格,则可以运行查询以输出正确的格式。 对于固定的少量项目,您可以对每列使用UNION

SELECT attr, 'A' AS 'item', A AS 'value'
FROM sheet
UNION
SELECT attr, 'B' AS 'item', B AS 'value'
FROM sheet
UNION
SELECT attr, 'C' AS 'item', C AS 'value'
FROM sheet
UNION
SELECT attr, 'D' AS 'item', D AS 'value'
FROM sheet;

工作示例:http://sqlfiddle.com/#!9/c274e7/7