手机
当前位置:查字典教程网 >编程开发 >mssql数据库 >SQL Sever中使用SQL语句实现把重复行数据合并为一行并用逗号分隔
SQL Sever中使用SQL语句实现把重复行数据合并为一行并用逗号分隔
摘要:一.定义表变量代码如下:DECLARE@T1table(UserIDint,UserNamenvarchar(50),CityNamenva...

一.定义表变量

代码如下:

DECLARE @T1 table

(

UserID int ,

UserName nvarchar(50),

CityName nvarchar(50)

);

insert into @T1 (UserID,UserName,CityName) values (1,'a','上海')

insert into @T1 (UserID,UserName,CityName) values (2,'b','北京')

insert into @T1 (UserID,UserName,CityName) values (3,'c','上海')

insert into @T1 (UserID,UserName,CityName) values (4,'d','北京')

insert into @T1 (UserID,UserName,CityName) values (5,'e','上海')

select * from @T1

-----最优的方式

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

----第二种方式

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(select ',' + fieldname from tablename for xml path('')),1,1,'')

这一整句的作用是将多行fieldname字段的内容串联起来,用逗号分隔。

for xml path是SQL Server 2005以后版本支持的一种生成XML的方式。

stuff函数的作用是去掉字符串最前面的逗号分隔符。

【SQL Sever中使用SQL语句实现把重复行数据合并为一行并用逗号分隔】相关文章:

SQL server 2008 数据库优化常用脚本

sql server 2005中使用with实现递归的方法

SQL Server数据备份处理过程探讨

SQL Server 2000中修改数据库COLLATE的实例

SQL Server使用一个语句块批量插入多条记录的三种方法

SQL Server 2008 正式版安装指南 包含序列号

SQL Server 使用 SET FMTONLY ON 获得表的元数据

sql里将重复行数据合并为一行数据使用逗号进行分隔

SQLServer 数据库备份过程中经常遇到的九种情况

SQL Server 在Management Studio中使用Web浏览器

精品推荐
分类导航