我有下表
ID1 ID2 Type
1 x A
1 y A
1 z B
.
.
.
我希望它像这样转换
ID1 A B
1 x,y z
任何想法如何去做
我能得到的最好的是2行,一个是A值,一个是B值,使用group_concat(id2)和group by ID1,Type
答案 0 :(得分:2)
我可以把它归结为一行,但有额外的逗号: - (
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 |
+------+------+------+