合并多行中的字符串并连接到另一个表

时间:2012-02-27 06:21:52

标签: sql

我为同一个问题删除了我的其他帖子并重新发布了一个新帖子,因为我觉得另一个问题令人困惑。请原谅我的副本。希望这会有所吸引力

这是我的表A

Id   Name
1    Name1
1    Name2
2    Name3
2    Name4
2    Name5

Table B:
Id FileName
1  file1
2  File2

我需要将输出结合表B作为

 Id FileName Name
 1  file1    Name1,Name2
 2  file2    Name3,Name4,Name5

我尝试了几种与COALESE相关的方法,它们可以独立工作,但只有当我输入Id =<>时才会这样做。

如何将这两个表结合起来?

如果我能解释清楚,请告诉我。我为我的上一篇文章道歉。

2 个答案:

答案 0 :(得分:1)

尝试以下方法:

SELECT a.id, b.FileName, 
  REPLACE(
    (SELECT distinct Name AS [data()] 
     FROM TableA a2 
     WHERE a.id=a2.id 
     ORDER BY a2.Name FOR XML PATH('')),
     ' ', ', ')
FROM TableB b inner join TableA a on a.id = b.id
GROUP BY a.id, b.FileName;

答案 1 :(得分:1)

SELECT Id, FileName,
(SELECT Name+',' FROM A WHERE A.Id = B.Id FOR XML PATH('')) Name
FROM B

您有责任删除最后一个逗号8 - )

提示:

SELECT Id, FileName,
STUFF((SELECT ','+Name FROM @A a WHERE A.Id = B.Id FOR XML PATH('')), 1, 1, '') Name
FROM @B b