Home Page Twitter Facebook Feed RSS
NotJustCode
Apri

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