2012-02-27 35 views
1

我刪除了我的另一個帖子以查看同一個問題,並重新發布了一個新的帖子,因爲我覺得其他問題令人困惑。請原諒我的重複。希望這會得到一定的牽引力結合多行中的字符串並加入到另一個表

這裏是我的表一

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 = <>。

我如何結合兩張桌子做這個?

請讓我知道,如果我能解釋更多。我爲我的最後一篇文章道歉。

+0

取決於RDBMS你使用。 – 2012-02-27 06:24:17

+0

@Oleg:我有sql server 2008 R2 – user393148 2012-02-27 06:26:01

回答

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 
+0

非常感謝Oleg。這有幫助。看起來我在學習SQL方面還有很長的路要走。 – user393148 2012-02-27 06:37:26

+0

哦,是的! 8-)祝你好運 – 2012-02-27 06:38:18

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; 
+0

爲什麼你需要在這裏加入和分組? – 2012-02-27 06:35:35

+0

如果A中的某些字符串包含空格,會很糟糕... – 2012-02-27 06:37:10

相關問題