SQL 多行转一列

1、创建表

CREATE TABLE [dbo].[a]
(
[id] [nchar] (10) COLLATE Chinese_PRC_CI_AS NULL,
[name] [nchar] (10) COLLATE Chinese_PRC_CI_AS NULL,
[value] [nchar] (10) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO

2、插入数据

复制代码
INSERT INTO dbo.a ( id, name, value )
VALUES  ( N'1', -- id - nchar(10)
          N'张三', -- name - nchar(10)
          N'1'  -- value - nchar(10)
          ),
          ( N'2', -- id - nchar(10)
          N'张三', -- name - nchar(10)
          N'2'  -- value - nchar(10)
          ),
          ( N'3', -- id - nchar(10)
          N'李四 ', -- name - nchar(10)
          N'1'  -- value - nchar(10)
          ),
          ( N'4', -- id - nchar(10)
          N'李四', -- name - nchar(10)
          N'2'  -- value - nchar(10)
          ),
          ( N'5', -- id - nchar(10)
          N'王五', -- name - nchar(10)
          N'1'  -- value - nchar(10)
          ),
          ( N'6', -- id - nchar(10)
          N'王五', -- name - nchar(10)
          N'2'  -- value - nchar(10)
          )
复制代码

3、查询表

SELECT * FROM  a 

 4、把value列拼接起来,并用逗号分隔

SELECT rTRIM(a.value)+','   FROM a  FOR XML PATH('') 

 5、按照name分组,计算当前name的value值的拼接

SELECT b.name,(SELECT rTRIM(value)+','  FROM a WHERE name=b.name FOR XML PATH('')) AS valuenew FROM dbo.a AS b  GROUP BY name

本文转载于 https://blog.csdn.net/ruo40018293/article/details/80880996

posted @   #不归路#。。。。  阅读(495)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示