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'
ADENDUM
Phần mở rộng XML trong SQL-Server cho phép bạn nối nhiều hàng thành một hàng. Mục đích thực sự của phần mở rộng là để bạn có thể xuất ra dưới dạng XML (hiển nhiên), nhưng có một số thủ thuật tiện lợi là sản phẩm phụ của phần mở rộng. Trong truy vấn trên, nếu có tên cột trong truy vấn con (FullName), nó sẽ xuất ra dưới dạng <FullName>Joe Bloggs1</FullName><FullName>Joe Bloggs2</FullName>
, bởi vì không có tên cột, nó chỉ đơn giản là nối các hàng (không tạo thành XML thích hợp). PATH
phần cho phép bạn chỉ định một nút bổ sung, ví dụ:nếu bạn sử dụng PATH ('Tên') ở trên, bạn sẽ nhận được <Name>;Joe Bloggs</Name><Name>;Joe Bloggs2</Name>
Nếu bạn kết hợp Đường dẫn với một tên cột, bạn sẽ nhận được Joe Bloggs.
Cuối cùng là STUFF
chỉ cần xóa dấu chấm phẩy ở đầu danh sách.