2 xwh1314 xwh1314 于 2018.07.11 17:02 提问

sqlserver 多条记录合并 5C
 id rq                fjname
1   2018-07-10   a.doc
2   2018-07-10   b.doc

id  rq                  fjname
1   2018-07-10   a.doc;b.doc

表中两条记录只有附件名称不同,
现在需要把日期一样的记录合并一下,
附件名称之间用分号隔开

只要sql 不要存储过程

11个回答

showbo
showbo   Ds   Rxr 2018.07.11 17:13

stuff+group by,然后将结果insert到其他表

https://www.cnblogs.com/ggll611928/p/6438737.html

caozhy
caozhy 正解!
10 天之前 回复
qq_37139773
qq_37139773   2018.07.11 17:08

--1

create table T1 (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','上海')
go

CREATE FUNCTION dbo.f_str(@id nvarchar(50))
RETURNS nvarchar(4000)
AS
BEGIN
DECLARE @r nvarchar (4000)
SET @r=''
SELECT @r=@r+','+ UserName FROM T1 WHERE CityName=@id
RETURN STUFF(@r, 1, 1, '')
END
GO
-- 调用函数
SELECt CityName, value = dbo.f_str(CityName) FROM T1 GROUP BY CityName
drop table T1
drop function dbo.f_str

--2

create table T1 (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','上海')
go
create function f_hb (@id nvarchar(50))
returns varchar(8000)
as
begin
declare @str varchar(8000)
set @str=''
select @str= @str+','+cast(UserName as varchar) from T1 where CityName =@id
set @str=right(@str , len(@str) -1)
return(@str)
End
go

--调用自定义函数得到结果:
select distinct CityName ,dbo.f_hb(CityName) as value from T1
drop table T1
drop function dbo.f_hb

--3

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 B.CityName,UserList FROM (
SELECT CityName,
UserList=stuff((SELECT ','+UserName FROM @T1 WHERE CityName=A.CityName FOR XML PATH('')), 1 , 1 , '')

FROM @T1 A
GROUP BY CityName
) B

--4

create table T1 (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(SELECT DISTINCT CityName FROM T1) A
OUTER APPLY(
SELECT[value]=STUFF(REPLACE(REPLACE(
(
SELECT UserName FROM T1 N
WHERE N.CityName = A.CityName
FOR XML AUTO
), '', ''), 1, 1, '')
)n

qq285679784
qq285679784   2018.07.11 17:13

图片说明

qq285679784
qq285679784   2018.07.11 17:13

图片说明

qq_39636244
qq_39636244   2018.07.11 17:21
weixin_42671477
weixin_42671477 谢谢
10 天之前 回复
qq_41802565
qq_41802565   2018.07.11 18:03

使用stuff+group by实现

--测试数据
select '2018-07-10' as rq,'a.doc' as fjname
into #dt
union all
select '2018-07-10','b.doc'
union all
select '2018-07-11','c.doc'
union all
select '2018-07-12','d.doc'

--实现语句
select rq, [values]=stuff((select ';'+fjname from #dt t where rq=#dt.rq for xml path('')), 1, 1, '') from #dt group by rq

--删除临时表
drop table #dt

yyxreader
yyxreader   2018.07.11 18:07
weixin_42671477
weixin_42671477 谢谢
10 天之前 回复
cyueyong
cyueyong   2018.07.12 11:12

select distinct rq,(select distinct(fjname)+';' from 表名 for xml path('')) as fjname

from 表名 a

cyueyong
cyueyong   2018.07.12 11:14

select distinct rq,(select distinct(fjname)+';' from 表名 where rq=a.rq for xml path('')) as fjname

from 表名 a

CatchMe_439
CatchMe_439   2018.07.16 16:31

select ROW_NUMBER()OVER(ORDER BY rq),CONVERT(VARCHAR(10),rq,121) AS rq,
stuff((select ';'+fjname from Test

where c.rq=rq
for xml path('')),1,1,'') as fjname

from Test c

group by c.rq

共11条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Sqlserver 多条记录合并 转载整理
--1 create table T1 (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'
sqlserver中 多条数据合并成一条数据 (stuff 与 for xml path 连用)
sqlserver中 多条数据合并成一条数据 (stuff 与 for xml path 连用) SQL Server 中的 STUFF 函数的使用: STUFF ( character_1 , start , length ,character_2 ) 作用:将character_1中自start(SQL中都是从1开始,而非0)起,删除length个长度的字符,然后用character_2替换删掉的字符。 character_1:一个字符数据表达式。character_1可以是常量、变
如何用一条SQL语句,将多条记录(一个字段)合并为一个?
例如:table字段为:tableID(nchar)查询结果为不确定的多条:tableIDT1T2T3T4……如何用一条SQL语句将这些记录合并为一个字段,值为:T1T2T3……create table t(tableid nchar(30))insert tselect T1 union allselect T2 union allselect T3 union allselec
sqlserver 多行合并
FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作。那么以一个实例为主.         一.FOR XML PATH 简单介绍              那么还是首先来介绍一下FOR XML PATH ,假设现在有一张兴趣爱好表(hobby)用来存放兴趣爱
sqlserver中将几条数据合并为一条数据
sqlserver中将几条数据合并为一条数据
sql合并多行记录
MySQL 使用关键字 group_concat,具体示例如下: select stuID, group_concat(borrowId) as dd from t_borrow SqLServer select companyIds = ( stuff( (select ',
sql语句实现多条数据合为一条数据
今天遇到个函数感觉很有用,给你们举个例子吧: 当我们给用户多个角色的时候,我们的用户角色表的展示方式有两种, 一种是把所有角色何在一起变成一个字符串,然后在该表查看用户就能看到一条关于用户角色的数据 另一种就是插入多条数据,一个用户一个角色,然后再对同一个用户insert一个角色,也就是当查询一个用户的时候,返回的是多条数据 个人感觉返回多条的数据这种方式便于数据库管理,但是如果在前台展示
多条记录合并成一个字符串的SQL文
http://community.csdn.net/Expert/TopicView.asp?id=4667667举例:查询结果如下abcde我想组合成一个字符串abcde怎么办?查询结果是动态的有可能会有几个,几十个,几百个查询的结果是单列的SQL语句:select replace(max(sys_connect_by_path(a,,)),,,) from (selec
用一条SQL语句,将多条记录(一个字段)合并为一个
  declare   @ctn  varchar(8000)      //声明一变量,变量长度根据记录数及字段长度来决定,  set     @ctn=     select  @ctn=@ctn+t1 from 表1  //将表1中的t1字段赋给变量,   select  @ctn as ctn                        //显示变量引用:select t2,
把多条记录合并成一条的SQL语句
SQL code问题描述: 无论是在sql 2000,还是在 sql 2005 中,都没有提供字符串的聚合函数, 所以,当我们在处理下列要求时,会比较麻烦: 有表tb, 如下: id value ----- ------ 1 aa 1 bb 2 aaa 2 bbb 2 ccc 需要得到结果: id values ------ -------