如何将具有相同ID的所有记录连接到一列?

时间:2013-10-08 07:28:57

标签: sql plsql

我有一个包含2列ID(不是PK)和NAME的表。我想取所有具有相同ID的名称并将它们连接成一列 - 我该怎么做?

e.g。

ID                 Name
----               ----
1                   A
2                   B     
3                   C   
3                   D          
5                   E
3                   F

结果:

1   A
2   B
3   CDF
5   E

2 个答案:

答案 0 :(得分:1)

试试此代码

SELECT Id,GROUP_CONCAT(Name SEPARATOR ' ') FROM tablename GROUP BY Id;

在Oracle中,GROUP_CONCAT()的名称为wm_concat()。

答案 1 :(得分:0)

使用MS Sql Server,您可能需要尝试:

create table test
( id int, name varchar(10))

insert test (id,name) values (1,'A')
insert test (id,name) values (2,'B')
insert test (id,name) values (3,'C')
insert test (id,name) values (3,'D')
insert test (id,name) values (5,'E')
insert test (id,name) values (4,'F')


SELECT DISTINCT id AS Tabelle,
                Spalten = STUFF((SELECT DISTINCT ',' + name
                                   FROM test a
                                  WHERE a.id = b.id
                                 FOR XML PATH ('')), 1, 1, '')
from test b