[英]Pivoting the column values and flagging using MySQL
我有一个具有唯一ID和相应值的表:
C1 C2
1 A;B
2 A
3 C;D;A
4 D;C;E
5 E
我想以如下方式进行转换:
C1 A B C D E
1 1 1 0 0 0
2 1 0 0 0 0
3 1 0 1 1 0
4 0 0 1 1 1
5 0 0 0 0 1
我在某个地方遇到过这种情况,但是却不知道如何执行此操作。
对每列使用LIKE运算符:
select C1,
concat(';', c2, ';') like '%;A;%' A,
concat(';', c2, ';') like '%;B;%' B,
concat(';', c2, ';') like '%;C;%' C,
concat(';', c2, ';') like '%;D;%' D,
concat(';', c2, ';') like '%;E;%' E
from tablename
参见演示 。
如果表中的实际值是A,B,C,D,E,则可以简化为:
select C1,
c2 like '%A%' A,
c2 like '%B%' B,
c2 like '%C%' C,
c2 like '%D%' D,
c2 like '%E%' E
from tablename
结果:
| C1 | A | B | C | D | E |
| --- | --- | --- | --- | --- | --- |
| 1 | 1 | 1 | 0 | 0 | 0 |
| 2 | 1 | 0 | 0 | 0 | 0 |
| 3 | 1 | 0 | 1 | 1 | 0 |
| 4 | 0 | 0 | 1 | 1 | 1 |
| 5 | 0 | 0 | 0 | 0 | 1 |
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.