SQLServer 一列变多列
时间: 2024-10-04 13:02:07 浏览: 30
解析SQLServer任意列之间的聚合
SQL Server 中的 "一列变多列" 或者说 "展开列" 操作通常是指将包含多个值的数据压缩到一行的情况转换成每一行对应一个值的形式。这在处理一些需要展示明细数据或者满足分组统计需求时非常有用。比如,如果你有一个包含逗号分隔的字符串类型的字段,它存储了多个数值,你可以使用 SQL Server 的内置函数如 STRING_SPLIT() 或 XML PATH() 来将其拆分成多行。
例如,假设你有一个名为 `Orders` 的表,其中有个 `ProductCodes` 列包含多个产品代码用逗号分隔:
```sql
CREATE TABLE Orders (
OrderID int,
ProductCodes nvarchar(50) -- 存储多个代码,用逗号分隔
);
```
你可以通过以下查询将 `ProductCodes` 展开成多行:
```sql
SELECT OrderID, value
FROM Orders
CROSS APPLY STRING_SPLIT(ProductCodes, ',') AS Codes(value);
```
这个查询会返回一个新的结果集,其中每个订单都有单独的一行,对应一个产品代码。
阅读全文