2013-08-21 24 views
12

我有如下表:tblFile串连许多行成一个单一的文本字符串分组

tblFile

我要的输出:

enter image description here

我串连许多行成一个单一的文本字符串;但是,我无法获得正确的分组。由于代码现在只会显示FileNameString字段中的每条记录:AAA,BBB,CCC,DDD,EEE,FFF

任何分组建议!

SELECT FileID, Stuff(
(SELECT  N', ' + CONVERT(Varchar, FileName) 
FROM   tblFile FOR XML PATH(''),TYPE) 
.value('text()[1]','nvarchar(max)'),1,2,N'')AS FileNameString 
From tblFile 
GROUP BY FileID 
+4

[请停止宣称'不长varchar'(http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/09/bad-habits -to-踢声明,VARCHAR,而无需-length.aspx)。 –

+0

@Aaron Bertrand感谢您的链接。真的很酷的话题。 –

回答

12

试试这个 -

SELECT DISTINCT 
     fileid 
    , STUFF((
     SELECT N', ' + CAST([filename] AS VARCHAR(255)) 
     FROM tblFile f2 
     WHERE f1.fileid = f2.fileid ---- string with grouping by fileid 
     FOR XML PATH (''), TYPE), 1, 2, '') AS FileNameString 
FROM tblFile f1 
+0

完美。谢谢。 – user1783736

+0

我很高兴能对你有所帮助:) –

+0

这非常有帮助! – codingManiac

相关问题