2013-08-21 2 views
12

Ho la seguente tabella: tblFileconcatenate molte righe in una singola stringa di testo con il raggruppamento

tblFile

mio output desiderato:

enter image description here

sto concatenare numero di righe in un unico stringa di testo; tuttavia, non riesco a ottenere il raggruppamento corretto. Poiché il codice è ora verrà visualizzato per ogni record nel campo FileNameString: AAA, BBB, CCC, DDD, EEE, FFF

Qualsiasi suggerimento con il raggruppamento!

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

[Si prega di smettere dichiarando 'varchar' senza lunghezza] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/09/bad-habits -to-kick-dichiarando-varchar-senza-length.aspx). –

+0

@ Aaron Bertrand grazie per il link. Argomento davvero interessante. –

risposta

12

provare questo -

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

Perfetto. Grazie. – user1783736

+0

Sono lieto di essere utile per voi :) –

+0

Questo è stato molto utile! – codingManiac