Sql 转换以逗号分隔的行值与内部联接查询表

Sql 转换以逗号分隔的行值与内部联接查询表,sql,Sql,我想转换以逗号分隔的行值,并使用内部联接表查询其他列 我的查询显示如下记录: Name ID Services Type xyz 1 s1 A xyz 1 s2 A xyz 1 s3 A abc 2 s2 B abc 2 s3 B 我希望输出如下所示: Name, ID, Services, Type xyz 1 s1,s2,s3 A abc 2 s2,s3 B 请使用以下代码: cr

我想转换以逗号分隔的行值,并使用内部联接表查询其他列

我的查询显示如下记录:

Name ID Services Type
xyz  1  s1       A
xyz  1  s2       A
xyz  1  s3       A
abc  2  s2       B
abc  2  s3       B

我希望输出如下所示:

Name, ID, Services, Type
xyz   1   s1,s2,s3  A
abc   2   s2,s3     B
请使用以下代码:

create table #name (name varchar(10), id int ,type varchar(10))

insert into #name values ('XYZ',1,'A')
insert into #name values ('abc',2,'B')

create table #services (id int ,[Services] varchar(10))

insert into #services (1,'s1')
insert into #services (1,'s1')
insert into #services (1,'s2')
insert into #services (1,'s3')
insert into #services (2,'s2')
insert into #services (2,'s3')

select  Name, t.ID
  , (select s1.[Services] +',' from #Services s1 where s1.id = s.id for xml path('')) AS services
  ,[TyPe]
from #name t 
inner join #services s on s.id = t.id 
插入到#名称值('XYZ',1,'A')中插入到#名称值('abc',2,'B')中


路径(“”))作为服务,[键入]来自#name t

您使用的是哪种DBMS?博士后?Oracle?这取决于DBMS,可能非常简单,也可能有点复杂。为什么要创建两个表?
create table #name ( name varchar(10), id int ,type varchar(10))
create table #services ( id int ,[Services] varchar(10))

insert into   #services values (1,'s1' ) 
insert into   #services values (1,'s2' )
insert into #services values (1,'s3' ) 
insert into #services values (2,'s2' ) 
insert into #services values (2,'s3' )

select * from   #name
select * from   #services


select Name, t.ID ,     
(select s1.[Services] +',' from #Services s1 where s1.id=t.id for xml