2010-11-24 58 views
0

我有如下表轉換數據在MySQL

ID1 ID2 Type 
1 x A 
1 y A 
1 z B 
. 
. 
. 

我想它改變這樣

ID1 A B 
1 x,y z 

不知道如何去了解它

我已經能夠最好get是2行,一個帶有A值,另一個帶有B值使用group_concat(id2)和group by ID1,類型

回答

2

我可以ge t將其降低到一排,但額外的逗號:-(

select ID1, 
     group_concat(if(`Type` = 'A', ID2, '')) A, 
     group_concat(if(`Type` = 'B', ID2, '')) B 
from tab 
group by ID1 

給出:

+------+------+------+ 
| ID1 | A | B | 
+------+------+------+ 
| 1 | x,y, | ,,z | 
+------+------+------+ 

供應NULL,而不是'修復了這個:

select ID1, 
     group_concat(if(`Type`='A', ID2, NULL)) A, 
     group_concat(if(`Type`='B', ID2, NULL)) B 
from tab 
group by ID1; 

給出:

+------+------+------+ 
| ID1 | A | B | 
+------+------+------+ 
| 1 | x,y | z | 
+------+------+------+ 
+0

謝謝。正是我需要的 – Midhat 2010-11-26 06:18:29