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'
UZUPEŁNIENIE
Rozszerzenie XML w SQL-Server umożliwia łączenie wielu wierszy w jeden. Rzeczywistą intencją rozszerzenia jest możliwość wyprowadzania jako XML (oczywiście), ale jest kilka fajnych sztuczek, które są produktami ubocznymi rozszerzeń. W powyższym zapytaniu, jeśli w podzapytaniu była nazwa kolumny (FullName), zostanie ona wyprowadzona jako
, ponieważ nie ma nazwy kolumny, po prostu łączy wiersze (nie tworząc poprawnego XML). PATH
part pozwala określić dodatkowy węzeł, na przykład jeśli użyjesz PATH('Name') w powyższym, otrzymasz
Wreszcie STUFF
po prostu usuwa średnik na początku listy.