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

一.定义表变量

复制代码 代码如下:

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函数的作用是去掉字符串最前面的逗号分隔符。
效果图:

时间: 2024-10-22 17:48:08

sql里将重复行数据合并为一行数据使用逗号进行分隔_mssql2005的相关文章

scala-spark中怎么将读取某几行数据合并成一行啊? 新手 谢谢 !

问题描述 spark中怎么将读取某几行数据合并成一行啊? 新手 谢谢 ! 例如图片里说的 谢谢啦 数据是读取的外部csv文件 麻烦啦 求大神指教一下 解决方案 sehll脚本将几行输出合并成一行显示 解决方案二: http://bbs.csdn.net/topics/391872110

分享SQL Server删除重复行的6个方法

1.如果有ID字段,就是具有唯一性的字段 复制代码 代码如下: delect table where id not in ( select max(id) from table group by col1,col2,col3... ) group by 子句后跟的字段就是你用来判断重复的条件,如只有col1,那么只要col1字段内容相同即表示记录相同. 2. 如果是判断所有字段也可以这样 复制代码 代码如下: select * into #aa from table group by id1,i

分享SQL Server删除重复行的6个方法_MsSql

1.如果有ID字段,就是具有唯一性的字段 复制代码 代码如下: delect table where id not in ( select max(id) from table group by col1,col2,col3... ) group by 子句后跟的字段就是你用来判断重复的条件,如只有col1,那么只要col1字段内容相同即表示记录相同. 2. 如果是判断所有字段也可以这样 复制代码 代码如下: select * into #aa from table group by id1,i

SQL Sever中使用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,U

怎么多条数据合并成一条数据

问题描述 数据库检索出来的数据格式尺寸:24.5尺寸:85.1宽度:56cm怎么合并成尺寸:24.585.1宽度:56cm最终效果类似像购物网站筛选条件的UI形式该怎么写 解决方案 解决方案二: 这不是sql的问题,需要在UI上做出处理解决方案三: 循环一下,发现第一列的内容重复,就赋值为空呗解决方案四: 你应该先把购物网站的html写出来.至少你可以打开"购物网站"学习人家的html声明定义吧?!如果懒得亲自写出html声明结构,而空谈数据库表,只想让别人替你写,你总是无暇真正去学习

sql中查询重复记录与删除重复记录

1.查找全部重复记录  代码如下 复制代码 Select * From 表 Where 重复字段 In (Select 重复字段 From 表 Group By 重复字段 Having Count(*)>1) 2.过滤重复记录(只显示一条)  代码如下 复制代码 Select * From HZT Where ID In (Select Max(ID) From HZT Group By Title) 注:此处显示ID最大一条记录 SQL Server删除重复行是我们最常见的操作之一,下面就为您

HybridDB · 最佳实践 · HybridDB 数据合并的方法与原理

引言 刚开始使用HybridDB的用户,有个问的比较多的问题:如何快速做数据"合并"(Merge)?所谓"合并",就是把数据新版本更新到HybridDB中.如果数据已经存在,则将它们替换为新版本:如果不存在,将它们插入数据库中.一般是离线的做这种数据合并,例如每天一次批量把数据更新到HybridDB中.也有客户需要实时的更新,即做到分钟级甚至秒级延迟.这里我们介绍一下HybridDB中数据合并的方法和背后原理. 简单更新过程 无论怎么做数据合并,都是对数据的修改,即

hadoop map怎么一次读取多行数据(一块数据)而非一行数据?

问题描述 hadoop map怎么一次读取多行数据(一块数据)而非一行数据? 利用hadoop做数据SVM并行计算,但是想在map任务中将数据分块建立模型再reduce中将分块的 模型合并,但是map每次只能读取一行数据,不能满足数据挖掘中用一整块数据去建模的 原则,请教大家怎么修改map任务逻辑,能一次读取一块数据而非一行数据,谢谢 解决方案 你需要自定义hadoop的InputFormat,而不是改mapper 解决方案二: 看这篇博客 里面讲了怎么实现一次读取多行http://blog.c

sqlserver利用存储过程去除重复行的sql语句

还是先上代码吧 ,可以先看 SQL语句去掉重复记录,获取重复记录 复制代码 代码如下: ALTER procedure [dbo].[PROC_ITEMMASTER_GETUNIQUE] @PAGEINDEX INT,@uid int,@itemnumber varchar(50) AS begin tran --开始事务 drop table [ItemMaster].[dbo].[testim] --删除表 --把不重复记录转存到testim中 select * into [ItemMast