2016-09-19 63 views
0

在表格下面,我有它。我有一个具有值的别名列。 我试图从别名制作动态列。别名是动态的,所以他们可以改变。从值中创建列 - MySQL

MySQL Join Multiple Rows as Columns这里他们有2个表,他们加入,我只有一个。但是我仍然无法实现它的工作。我想知道我是否真的需要一份准备声明。

当我使用

SELECT GROUP_CONCAT(DISTINCT CONCAT('value AS ', alias)) 

我拿到这块查询作为列名。


ID value alias 
1 aaa  test1 
1 bbb  test2 
1 ccc  test3 
2 ddd  test1 
2 eee  test2 
2 fff  test3 

权从MySQL查询期望的结果是:

ID test1 test2 test3 
1  aaa  bbb  ccc 
2  ddd  eee  fff 

有谁知道如何做到这一点?

+4

[MySQL的支点行成列的动态数量(可能的重复http://stackoverflow.com/questions/12004603/mysql-pivot-row-进入动态列数) – Shadow

+0

这个问题已被问过无数次。 – spencer7593

回答

0

一个简单的支点查询应该在这里工作:

SELECT ID, 
     MAX(CASE WHEN alias = 'test1' THEN value ELSE NULL END) AS test1, 
     MAX(CASE WHEN alias = 'test2' THEN value ELSE NULL END) AS test2, 
     MAX(CASE WHEN alias = 'test3' THEN value ELSE NULL END) AS test3 
FROM yourTable 
GROUP BY ID 
+0

谢谢你的回答。这很酷,但别名是动态的。我会编辑我的问题。 –

+0

@Tim van Uum:这个答案中的陈述将产生结果集。如果您希望这是动态的,可以有不同数量的列或不同的列别名,而这些不能在单个SQL语句中动态完成。该过程的动态部分(单独的步骤)生成要执行的此SQL文本。 – spencer7593