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'
Nachtrag
Die XML-Erweiterung in SQL-Server ermöglicht es Ihnen, mehrere Zeilen zu einer einzigen Zeile zu verketten. Die eigentliche Absicht der Erweiterung ist, dass Sie (offensichtlich) als XML ausgeben können, aber es gibt einige raffinierte Tricks, die Nebenprodukte der Erweiterungen sind. Wenn in der obigen Abfrage ein Spaltenname in der Unterabfrage (FullName) vorhanden wäre, würde dieser als <FullName>Joe Bloggs1</FullName><FullName>Joe Bloggs2</FullName>
ausgegeben , da es keinen Spaltennamen gibt, werden die Zeilen einfach verkettet (kein richtiges XML). Der PATH
part ermöglicht es Ihnen, einen zusätzlichen Knoten anzugeben, wenn Sie beispielsweise PATH('Name') oben verwenden, erhalten Sie <Name>;Joe Bloggs</Name><Name>;Joe Bloggs2</Name>
Wenn Sie Pfad mit einem Spaltennamen kombinieren, erhalten Sie Joe Bloggs.
Schließlich das STUFF
entfernt nur das Semikolon am Anfang der Liste.