sql里将重复行数据合并为一行数据使用逗号进行分隔
更新时间:2013年04月08日 10:44:48 作者:
sql里将重复行数据合并为一行,将多行fieldname字段的内容串联起来,用逗号分隔,接下来为大家介绍下详细的实现sql语句,希望对你有所帮助
一.定义表变量
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函数的作用是去掉字符串最前面的逗号分隔符。
效果图:
复制代码 代码如下:
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函数的作用是去掉字符串最前面的逗号分隔符。
效果图:
相关文章
MSSQL2005 INSERT,UPDATE,DELETE 之OUTPUT子句使用实例
MSSQL2005 INSERT,UPDATE,DELETE使用实例,大家可以看下。2009-10-10让sql2005运行在独立用户下出现 WMI 提供程序错误的解决方式
您还有 %1 的时间注销,如果您 在此时间到之后仍没有注销,您的会话 将会断开,任何打开的文件或设备 就可能丢失数据2012-11-11SQL Server 2005的cmd_shell组件的开启方法
这篇文章介绍了SQL Server 2005的cmd_shell组件的开启方法,有需要的朋友可以参考一下2013-09-09SQL Server CROSS APPLY和OUTER APPLY的应用详解
SQL Server数据库操作中,在2005以上的版本新增加了一个APPLY表运算符的功能2011-10-10SqlServer 2005 T-SQL Query 学习笔记(3)
利用ROW_NUMBER()进行高效率的分页。2010-02-02sqlserver 通用存储过程分页代码(附使用ROW_NUMBER()和不使用ROW_NUMBER()两种情况性能分析
通用存储过程分页(使用ROW_NUMBER()和不使用ROW_NUMBER()两种情况)性能分析2010-05-05
最新评论