首页 > 解决方案 > 要作为列提取的 SQL 查询字符串

问题描述

这是我的表数据表名-->mytable

id     string
1      A01,B01,C01
2      A02,B02,C02
3      A01,B01
4      C01,C02
5      C02,C03

我需要像下面这样的输出,任何人都可以在这里帮助编写 oracle SQL。

id |   A01 |  B01 | A02 | B02 | C01 | C02 | C03 |
1  |    Y  |  Y   |     |     |  Y  |     |     |
2  |       |      | Y   | Y   |     | Y   |     |
3  |    Y  |  Y   |     |     |     |     |     |        
4  |       |      |     |     |  Y  | Y   |     |
5  |       |      |     |     |     | Y   |  Y  |

标签: sqloracleoracle-sqldeveloper

解决方案


您可以使用case表达式:

select id,
       (case when string like '%A01%' then 'Y' end) as a01,
       (case when string like '%B01%' then 'Y' end) as b01,
       . . .
from t;

注意:因为你所有的代码都是三个字符,所以你不必担心冲突(例如'A01'匹配'BA01'. 这在一定程度上简化了逻辑。


推荐阅读