SQL Sever中使用SQL语句实现把重复行数据合并为一

网络编程 2025-03-13 14:34www.168986.cn编程入门

这篇文章主要介绍了在SQL Server中如何使用SQL语句将重复行的数据合并为一行并用逗号分隔。对于这一任务,有两种实现方式供大家参考。

接下来,我们介绍两种合并重复行数据的方法。

方式一:使用STUFF函数和FOR XML PATH结合

这是最优化的一种方式。我们对每个CityName进行分组,然后使用STUFF函数和FOR XML PATH结合,将同一城市的所有UserName串联起来,并用逗号分隔。

查询语句如下:

```sql

SELECT CityName,

STUFF((SELECT ',' + UserName

FROM @T1 subTitle

WHERE CityName=A.CityName

FOR XML PATH('')),1,1,'') AS A

FROM @T1 A

GROUP BY CityName

```

方式二:使用LEFT函数和LEN函数结合

这种方式稍微复杂一些。我们首先使用FOR XML PATH将同一城市的所有UserName串联起来,并使用逗号分隔。然后,使用LEFT函数和LEN函数结合,去掉结果字符串最前面的逗号。

查询语句如下:

```sql

SELECT B.CityName,

LEFT(UserList, LEN(UserList)-1)

FROM (

SELECT CityName,

(SELECT UserName+','

FROM @T1

WHERE CityName=A.CityName

FOR XML PATH('')) AS UserList

FROM @T1 A

GROUP BY CityName

) B

```

这两种方式都可以实现将重复行数据合并为一行并用逗号分隔的目标。大家可以根据实际情况选择适合自己的方式。

需要注意的是,stuff函数的作用是去掉字符串最前面的逗号分隔符,而FOR XML PATH是SQL Server 2005以后版本支持的一种生成XML的方式,通过这种方式可以将多行数据转化为一个字符串。

希望这篇文章对大家有所帮助!如有任何疑问,欢迎留言讨论。

上一篇:JavaScript中严格判断NaN的方法 下一篇:没有了

Copyright © 2016-2025 www.168986.cn 狼蚁网络 版权所有 Power by