SELECT agenda.AgendaItemNumber,
Agenda.AgendaName,
AgendaType.AgendaTypeDescription,
STUFF(( SELECT ';' + FullName
FROM UserDetails
WHERE UserDetails.AgendaID = Agenda.AgendaID
FOR XML PATH('')
), 1, 1, '') AS fullName
FROM Agenda
INNER JOIN AgendaType
ON AgendaType.AgendaTypeID=Agenda.AgendaTypeID
INNER JOIN UserDetails
ON Agenda.AgendaID = Userdetails.AgendaID
WHERE agenda.AgendaTypeID = '2'
AND AgendaItemNumber = AgendaItemNumber
AND AgendaName = AgendaName
AND AgendaTypeDescription = AgendaTypeDescription
AND AgendaItemNumber >= '3'
APPENDICE
L'estensione XML in SQL-Server consente di concatenare più righe in un'unica riga. L'intenzione reale dell'estensione è che tu possa emettere come XML (ovviamente), ma ci sono alcuni trucchi ingegnosi che sono sottoprodotti delle estensioni. Nella query precedente, se nella sottoquery fosse presente un nome di colonna (FullName), verrebbe restituito come <FullName>Joe Bloggs1</FullName><FullName>Joe Bloggs2</FullName>
, poiché non esiste un nome di colonna, concatena semplicemente le righe (non formando un XML corretto). Il PATH
parte ti consente di specificare un nodo aggiuntivo, ad esempio se usi PATH('Name') in quanto sopra otterrai <Name>;Joe Bloggs</Name><Name>;Joe Bloggs2</Name>
Se combini Path con il nome di una colonna otterrai Joe Bloggs.
Infine il STUFF
rimuove semplicemente il punto e virgola all'inizio dell'elenco.