22,301
社区成员




create table a(id int, fl varchar(10))
go
create table b(id int, num varchar(10))
go
insert into a values(100,'xx'),(200,'yy'),(300,'zz')
insert into b values(100,'A'),(100,'B'),(100,'C'),(200,'XA'),(200,'YB'),(200,'ZC')
go
-- SQL 2000 ,要自定义这个函数,只是通用性不强
create function fn_agg(@id int)
returns varchar(30)
begin
declare @ret varchar(30) = ''
select @ret = @ret + ',' + num from b where id = @id
set @ret = stuff(@ret,1,1,'')
return @ret
end
go
select id, fl, dbo.fn_agg(id) newcol
from a
go
drop table a,b
drop function fn_agg
go
id fl newcol
----------- ---------- ------------------------------
100 xx A,B,C
200 yy XA,YB,ZC
300 zz NULL
(3 行受影响)
create table a(id int, fl varchar(10))
go
create table b(id int, num varchar(10))
go
insert into a values(100,'xx'),(200,'yy'),(300,'zz')
insert into b values(100,'A'),(100,'B'),(100,'C'),(200,'XA'),(200,'YB'),(200,'ZC')
go
select id, fl,
stuff((select ',' + num from b where a.id = b.id for xml path('')),1,1,'') newcol
from a
go
drop table a,b
go
id fl newcol
----------- ---------- ------------
100 xx A,B,C
200 yy XA,YB,ZC
300 zz NULL
(3 行受影响)