2016-09-19 29 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