Se avete la necessita' di concatenare in una stringa dei campi che sono su piu' records, normalmente viene suggerito l'uso dei cursori che eseguono un ciclo sulle righe interessate dalla clausola "where".
Per fortuna esite un modo piu' veloce per ottenere la concatenazione desiderata senza l'uso di cursori, senza stressare la cpu del server e quella del programmatore!
Come test, ho usato il db d'esempio AdventureWorks e la tabella "Production.Product". Voglio quindi concatenare e separare con una virgola, tutti i prodotti il cui colore e' "Black".
Per per poter concaternare i prodotti, ho usato il seguente codice:
SELECT STUFF ((SELECT ', ' + [Name]
FROM Production.Product WHERE Color = 'Black'
FOR XML PATH ('')),1,2,'') AS Black_Products
Usando quindi,
FOR XML PATH
ma anche la funzione (serve per separare con le virgole al meglio)
STUFF
potrete risolvere velocemente e
senza cursori, la vostra concatenazione!
Maggiori info sulla funzione
STUFF le trovate
qui, per quanto riguarda le istruzioni
FOR XML PATH, potete guardare
qui.
Buon lavoro!