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'
DODATEK
Rozšíření XML v SQL-Server umožňuje zřetězit více řádků do jednoho řádku. Skutečným záměrem rozšíření je, abyste jej mohli vydávat jako XML (samozřejmě), ale existuje několik šikovných triků, které jsou vedlejšími produkty rozšíření. Pokud by ve výše uvedeném dotazu byl v poddotazu název sloupce (FullName), vyšel by jako <FullName>Joe Bloggs1</FullName><FullName>Joe Bloggs2</FullName>
, protože neexistuje žádný název sloupce, jednoduše zřetězí řádky (nevytvoří správné XML). PATH
část vám umožňuje zadat další uzel, například pokud použijete PATH('Name') ve výše uvedeném, získáte <Name>;Joe Bloggs</Name><Name>;Joe Bloggs2</Name>
Pokud zkombinujete cestu s názvem sloupce, získáte Joe Bloggs.
Nakonec STUFF
pouze odstraní středník na začátku seznamu.