SQL如何行转列合并字符串并用逗号隔开?

2025-11-17 21:50:52

1、打开微软SSMS数据库工具,登录后新建一个查询窗口。

SQL如何行转列合并字符串并用逗号隔开?

2、先准备一些示例数据,新建一个表用于存储三国武将的阵营信息。执行以下语句:

CREATE TABLE WJZY 

(

WName VARCHAR(30),    --姓名

Camp  VARCHAR(30)     --阵营

);

SQL如何行转列合并字符串并用逗号隔开?

3、接着为WJZY表插入一些武将及所属阵营的数据,执行以下语句插入:

INSERT INTO WJZY  VALUES('孙乾','蜀');

INSERT INTO WJZY  VALUES('庞统','蜀');

INSERT INTO WJZY  VALUES('黄盖','吴');

INSERT INTO WJZY  VALUES('曹仁','魏');

INSERT INTO WJZY  VALUES('陆逊','吴');

INSERT INTO WJZY  VALUES('张辽','魏');

INSERT INTO WJZY  VALUES('于禁','魏');

INSERT INTO WJZY  VALUES('赵云','蜀');

INSERT INTO WJZY  VALUES('甘宁','吴');

SQL如何行转列合并字符串并用逗号隔开?

4、然后可以执行 select * from WJZY 语句查询下刚才插入的数据,可以看到是每名武将一行的数据,下面要将其按所属阵营来合并。

SQL如何行转列合并字符串并用逗号隔开?

5、合并使用的是 FOR XML PATH 方法,执行select * from WJZY FOR XML PATH('') 可以看到使用该方法后会把所有的数据都以XML的方式合并到一行去了。

SQL如何行转列合并字符串并用逗号隔开?

6、最后想办法将数据按阵营来合并数据即可,使用distinct方法区分阵营并用子查询的方式查询武将的姓名,执行以下语句可以看到武将姓名字符按阵营合并到一行了并用逗号隔开。

select distinct camp as 阵营,

 (select  wname+','  from WJZY a 

   where a.camp=WJZY.camp  FOR XML PATH('')) as 姓名

from WJZY 

SQL如何行转列合并字符串并用逗号隔开?

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢