sql - 要作为列提取的 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 |
解决方案
您可以使用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'
. 这在一定程度上简化了逻辑。
推荐阅读
- php - 如何在单个查询中显示每个月的购买和退货?
- css - 在不同高度的wordpress菜单中显示项目
- ios - 增加标签编辑器限制 Xcode
- quickbooks - 尝试使用 QB Web 连接器实现 consolibyte/quickbooks-php
- python - 为什么 numpy int64 不能与 timedelta64 一起使用
- spring-boot - 在 Spring Boot 中为每个测试类使用测试数据分离 liquibase 文件
- api - 获取虚拟数据作为对 GCP 中经过身份验证的有效 api 调用的响应
- cmake - 未安装 iOS QtQuick.Controls 2.x 上的 QML
- apache-spark - 在 Spark 结构化流中顺序写入多个流
- ajax - 如何向 Ajax 结果添加数字分页,显示自定义分类法的播客(自定义帖子)过滤器