繁体   English   中英

使用MySQL透视列值并进行标记

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM