多语言展示
当前在线:1412今日阅读:91今日分享:37

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

介绍在SQL Server 如何将多行字符串记录合并成一行,用逗号将字符串隔开。
方法/步骤
2

先准备一些示例数据,新建一个表用于存储三国武将的阵营信息。执行以下语句:CREATE TABLE WJZY ( WName VARCHAR(30),    --姓名 Camp  VARCHAR(30)     --阵营 );

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('甘宁','吴');

4

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

5

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

6

最后想办法将数据按阵营来合并数据即可,使用distinct方法区分阵营并用子查询的方式查询武将的姓名,执行以下语句可以看到武将姓名字符按阵营合并到一行了并用逗号隔开。select distinct camp as 阵营, (select  wname+','  from WJZY a    where a.camp=WJZY.camp  FOR XML PATH('')) as 姓名from WJZY

推荐信息