sql - 将单个文本单元格拆分为多行并复制其他列

标签 sql sql-server

我正在尝试将单列值拆分为多行,拆分文本对我来说似乎是可行的,但我也希望新行是基于另一列值创建的。

| Order_id|  Customer| Product |
----------------------------------------------
| 1       |  John    | table, chair, cabinet |
| 2       |  Bob     | table, chair  |
| 3       |  Dylan   | cabinet |

我想要的结果如下:

| Order_id|  Customer| Product |
----------------------------------------------
| 1       |  John    | table |
| 1       |  John    | chair |
| 1       |  John    | cabinet |
| 2       |  Bob     | table |
| 2       |  Bob     | chair |
| 3       |  Dylan   | cabinet |

最佳答案

如果您不使用 SQL Server +12,那么 XML 节点方法可能会有所帮助。

select 
       Order_id, Customer,
       ltrim( P.value('.', 'varchar(max)'))  Product
from
(
       select Order_id, Customer,
              cast('<X>'+replace(Product , ',', '</X><X>')+'</X>' as xml) Product
       from table
)a cross apply Product.nodes ('/X') as Product(P)

关于sql - 将单个文本单元格拆分为多行并复制其他列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48820638/

相关文章:

mysql - SQL 根据状态和日期选择订单

mysql - 在mysql中计算登录时间间隔

php - 当一个表可以有更多结果时的 SQL 查询

mysql - 为什么银行或金融公司在其 "Core"系统中更喜欢 Oracle 而不是其他 RDBMS?

mysql - 在 mysql 表中插入一个较旧的日期

sql - 如何对一个模型*不*包含另一个模型的多对多关系进行过滤?

mysql - SQL 计算所有行而不是计算单个行

c# - 在 IQueryable 中多次执行 ToList

arrays - 用于 JSON 输出整数数组的 SQL Server 2016

sql - 是否有为 SQL Server 生成完整数据库 DDL 的工具? Postgres 和 MySQL 呢?