【发布时间】:2014-10-16 18:27:23
【问题描述】:
我已阅读有关数据透视表和将行交换为列的先前帖子,但我找不到我的问题的正确答案。我在 MySQL 中有下表:
+--------+--------+
| Userid | gname |
+--------+--------+
| 12 | AVBD |
| 12 | ASD |
| 12 | AVFD |
| 12 | Aew1 |
| 12 | AVBD32 |
| 12 | ASD23 |
| 12 | AVBDe |
| 12 | ASDer |
| 45 | AVBD |
| 45 | ASD444 |
| 45 | AVBD44 |
| 45 | ASD44 |
| 453 | AVBD22 |
| 453 | ASD1 |
+--------+--------+
我想生成一个有序的数据透视表:
+--------+--------+--------+--------+--------+--------+--------+--------+--------+
| Userid | gname1 | gname2 | gname3 | gname4 | gname5 | gname6 | gname7 | gname8 |
+--------+--------+--------+--------+--------+--------+--------+--------+--------+
| 12 | AVBD | ASD | AVFD | Aew1 | AVBD32 | ASD23 | AVBDe | ASDer |
| 45 | AVBD | ASD444 | AVBD44 | ASD44 | | | | |
| 453 | AVBD22 | ASD1 | | | | | | |
+--------+--------+--------+--------+--------+--------+--------+--------+--------+
gname 的名称是动态的,没有限制。
这是数据设置以及 SQLFiddle http://sqlfiddle.com/#!2/65fec
CREATE TABLE gnames
(`Userid` int, `gname` varchar(6))
;
INSERT INTO gnames
(`Userid`, `gname`)
VALUES
(12, 'AVBD'),
(12, 'ASD'),
(12, 'AVFD'),
(12, 'Aew1'),
(12, 'AVBD32'),
(12, 'ASD23'),
(12, 'AVBDe'),
(12, 'ASDer'),
(45, 'AVBD'),
(45, 'ASD444'),
(45, 'AVBD44'),
(45, 'ASD44'),
(453, 'AVBD22'),
(453, 'ASD1')
;
【问题讨论】:
-
在链接的答案中,您将使用您的列
gname代替order和您的Userid代替ID。 -
“数据”列怎么样??
-
抱歉 - 看起来您会使用
gname代替data,Userid代替ID,并忽略order。我将尝试在 sqlfiddle 上设置一个类似的示例... -
tnx,那你能取消我的问题吗??
-
我只是取消标记它,因为我没有成功转换其他答案。我还用 [pivot] 标记它,这会将它放回首页。