sql 多行、一行 互转
原始数据:
期望数据:

1 IF OBJECT_ID('temp_20170701','u') IS NOT NULL DROP TABLE temp_20170701 2 3 CREATE TABLE temp_20170701 ( 4 ID INT PRIMARY KEY IDENTITY(1,1), 5 NAME NVARCHAR(50), 6 Subjectname NVARCHAR(50), 7 Score INT 8 )

1 INSERT dbo.temp_20170701( Name, subjectname, Score ) 2 SELECT 'A','语文','20' UNION 3 SELECT 'A','数学','30' UNION 4 SELECT 'A','英语','40' UNION 5 SELECT 'B','语文','50' UNION 6 SELECT 'B','数学','60' UNION 7 SELECT 'B','英语','70' UNION 8 SELECT 'C','语文','80' UNION 9 SELECT 'C','数学','90' UNION 10 SELECT 'C','英语','100' UNION 11 SELECT 'D','英语','100'

1 SELECT Name ,Score=STUFF((SELECT ','+CONVERT(NVARCHAR(max),Score) FROM temp_20170701 t1 WHERE t1.NAME=t2.NAME FOR XML PATH('')),1,1,'') 2 FROM temp_20170701 t2 GROUP BY t2.NAME
原始数据:
期望数据:

1 CREATE TABLE temp_20170702 ( 2 ID INT PRIMARY KEY IDENTITY(1,1), 3 NAME NVARCHAR(50), 4 Score varchar(100) 5 )

1 insert temp_20170702 (Name,Score) 2 select 'A','30,40,20' union 3 select 'B','60,70,50' union 4 select 'C','90,100,80' union 5 select 'D','100'

1 select a.NAME,b.value as Score from ( 2 select *,s=CONVERT(xml,'<root><v>'+REPLACE(Score,',','</v><v>')+'</v></root>') from temp_20170702 3 ) a outer apply 4 (select value=n.s.value('.','varchar(100)') from a.s.nodes('/root/v') n(s)) b
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)