Concatenazione di campi in SQL 1685 Visite) Tips and tricks
Quante volte capita di dover riportare un set di informazioni e di dover utilizzare una colonna per concatenare tutti gli elementi associati?
In questo esempio riportiamo tutte le email inviate riportando per ognuna testo, data di creazione e tutti i destinatari separati da "-"
SELECT Email.Text,Email.CreationTime,
(STUFF(
(
select '-' , Contact.Name as [text()] , ' ' + Contact.Surname as [text()]
from Recipient join Contact on Recipient.IDContact=Contact.ID
where Recipient.IDEmail=Email.IDEmail
for xml path(''))
,1,1,'')
)as Recipients
from Email
Il comando for xml path trasforma il risultato della query in un XML. Aggiungendo un suffisso ("-") ed utilizzando "," otterremo una stringa che concatena tutte le informazioni. Infine si usa il comando STUFF per rimuovere il primo carattere.
Il risultato sarà:
Text | CreationTime | Recipients |
Hello | 06/09/2015 | Carlo Bianchi-Mario Rossi |
Dear Friends | 06/09/2015 | John Jackson-Jack Johnson |
Grazie al collega Enrico la segnalazione