我正在尝试在MySQL工作台中编写一个数据透视功能,而且我看过的许多地方并不是超级相关的。
我目前有:
order_ID Part Description Order number
1 103 A 1
2 104 B 1
3 103 A 2
4 105 C 3
5 103 A 4
6 105 C 4
7 107 D 4
我想创建:
Order Part1 Description Part2 Description Part3 Description
1 103 A 104 B
2 103 A
3 105 C
4 103 A 105 C 107 D
我可以将主键保留在输出中,但这不是必需的。我遇到的问题是许多枢轴功能涉及使用不同的部件名称来移动它们;但是,我有500多个零件。我还想将描述和部分组合在一起,使它们彼此相邻 - 大多数枢轴功能都不足以解决这个问题。
我确实在Excel中编写了一个宏来执行此操作,但由于在R中进行了进一步分析,我必须在数据库中完成此操作,并且我从数据库中提取数据,并且我必须自动执行对数据所做的任何更改。因此,我无法选择如何组织和布局数据。请不要提及规范化数据或其他数据库技术,因为我正在尝试修复数据以及它有多乱,但我没有选择如何输入数据。
我曾经在MySQL中获得使用数据透视的一些资源,但我无法获得任何代码。
mysql pivoting - how can I fetch data from the same table into different columns?
http://en.wikibooks.org/wiki/MySQL/Pivot_table
http://buysql.com/mysql/14-how-to-automate-pivot-tables.html
答案 0 :(得分:0)
Select group_concat(Table.column1) as anything,
group_concat(Table.column2 separator ';')
AS Anything2, Table.`column3`
FROM Table
group by Table.column3;
Alter TABLE Table ADD
`newcolumn1` varchar(100) DEFAULT '' after `column3`;
Alter TABLE MB ADD
`newcolumn2` varchar(500) DEFAULT '' after `newcolumn1`;
UPDATE Table SET
`newcolumn1` = IF (
LOCATE(',', column1) >0,
SUBSTRING(column1, 1,LOCATE(',', column1)-1),
column1
),
`newcolumn2` = IF(
LOCATE(',', column1) > 0,
SUBSTRING(column1, LOCATE(',', column1)+1),
'');
UPDATE Table SET
newcolumn2 = SUBSTRING_INDEX(newcolumn2, ',', 1);
UPDATE Table SET
newcolumn3 = SUBSTRING_INDEX(newcolumn3, ',', 1);
此代码完全符合上面我想要的格式。