其它字段都相同,只有一个字段不相同,n条记录的怎样合并?

mnm35 2004-12-13 01:23:29
ID name Name2
1 kk 中
1 kk 国
1 kk 人
.
.
.
(可能有n条记录)

合并后的结果是

ID name Name2
1 kk 中\国\人...

这个sql语句怎么写?
...全文
226 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
vinsonshen 2004-12-13
  • 打赏
  • 举报
回复

若ID为只有"1":

declare @str varchar(8000)
set @str=''
select @str=@str+name2+'\' from 你的表
set @str=left(@str,len(@str)-1)
select id,name,@str as name2 from 你的表 group by id,name

-------------------------------------------------------------
若id有多个不同值,则用函数:

create function F_test2 (@id varchar(10))
returns varchar(8000)
as
begin
declare @str varchar(8000)
set @str=''
select @str=@str+name2+'\' from 你的表 where id=@id
set @str=left(@str,len(@str)-1)
return @str
end

调用函数:
select id,name,dbo.F_test2(id) from 你的表 group by id,name
vinsonshen 2004-12-13
  • 打赏
  • 举报
回复
若ID为只有1:

declare @str varchar(8000)
set @str=''
select @str=@str+name2+'\' from 你的表
set @str=left(@str,len(@str)-1)
select id,name,@str as name2 from #test group by id,name

---------------------------

若id有多个不同值,则用函数:

create function F_test2 (@id varchar(10))
returns varchar(8000)
as
begin
declare @str varchar(8000)
set @str=''
select @str=@str+name2+'\' from 你的表 where id=@id
set @str=left(@str,len(@str)-1)
return @str
end

调用:
select id,name,dbo.F_test2(id) from 你的表 group by id,name
mnm35 2004-12-13
  • 打赏
  • 举报
回复
up
lsxaa 2004-12-13
  • 打赏
  • 举报
回复
declare @s varchar(8000)

set @s=''
select @s=@s+'\'+Name2 from t

select top 1 id,name,name2=@s from t
Andy__Huang 2004-12-13
  • 打赏
  • 举报
回复
--示例


--建表
create table tb (A varchar(10),B varchar(1000))
Insert into tb
select '111','AA0000,AA0001,AA0002,'
union all select '111','BB0000,BB0001,BB0002,'
union all select '222','AA0120,AA0102,AA1453,'
union all select '222','BB1212,BB3423,BB2123,'

select * from tb

--函數
create function dbo.fn_b(@a varchar(10))
returns varchar(1000)
as
begin
declare @s varchar(1000)
set @s=''
select @s=@s+[B] from tb where A=@a
return (@s)
end

--刪除
drop table tb
drop function dbo.fn_b

--結果
select A,B=dbo.fn_b(A) from tb group by A
A B
-------------------------------------------
111 AA0000,AA0001,AA0002,BB0000,BB0001,BB0002,
222 AA0120,AA0102,AA1453,BB1212,BB3423,BB2123,

pbsql 2004-12-13
  • 打赏
  • 举报
回复
搜“合并”

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧