SQL Sever中使用SQL语句实现把重复行数据合并为一
这篇文章主要介绍了在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的方式,通过这种方式可以将多行数据转化为一个字符串。
希望这篇文章对大家有所帮助!如有任何疑问,欢迎留言讨论。
编程语言
- SQL Sever中使用SQL语句实现把重复行数据合并为一
- JavaScript中严格判断NaN的方法
- python 利用正则表达式提取特殊信息
- ASP创建对象的两种方法比较
- win7计划任务定时执行PHP脚本设置图解
- ES6中Array.find()和findIndex()函数的用法详解
- 详解React中setState回调函数
- 用正则表达式判断字符串是汉字还是拼音的js函数
- PHP函数getenv简介和使用实例
- JavaScript函数参数使用带参数名的方式赋值传入的
- SQL Server数据复制到的Access两步走
- asp下检查表中是否存在某个字段(列)函数
- 去掉vue 中的代码规范检测两种方法(Eslint验证)
- jsp中session过期设置及web.xml配置学习
- js+html获取系统当前时间
- react-router JS 控制路由跳转实例