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'
ANEXO
La extensión XML en SQL-Server le permite concatenar varias filas en una sola fila. La intención real de la extensión es que pueda generar una salida como XML (obviamente), pero hay algunos trucos ingeniosos que son subproductos de las extensiones. En la consulta anterior, si hubiera un nombre de columna en la subconsulta (FullName), se generaría como <FullName>Joe Bloggs1</FullName><FullName>Joe Bloggs2</FullName>
, debido a que no hay un nombre de columna, simplemente concatena las filas (sin formar el XML adecuado). El PATH
part le permite especificar un nodo adicional, por ejemplo, si usa PATH('Nombre') en lo anterior, obtendría <Name>;Joe Bloggs</Name><Name>;Joe Bloggs2</Name>
Si combina Ruta con un nombre de columna, obtendrá Joe Bloggs.
Finalmente las STUFF
simplemente elimina el punto y coma al comienzo de la lista.