2013-08-21 51 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

相關問題