La puissance de la syntaxe permettant même d'effectuer cette opération pour chacun des enregistrements d'une autre table/sélection.
Un concept vaguement comparable aux "nested tables" d'ADO et bigrement utile pour du reporting :-)
select top 5 usr.ID_User, Left( usr.LoginName, 5 )+'****' as [Scrambled Login], ( SELECT gList.GroupName +', ' as [text()] from tblSSlnkGtoU gtouList left join tblSSGroups gList on gList.ID_Group = gtouList.ID_Group where gtouList.ID_User = usr.ID_User Order by glist.GroupName FOR XML PATH( '' ) ) as [Scrambled GroupList] FROM tblSSUsers usr where usr.ID_User > 100
Voici l'exemple issus de l'article d'Anatoly Lubarsky (voir référence ci-dessous).
SELECT CustomerID ,(SELECT CAST(OrderID AS VARCHAR(MAX)) + ',' AS [text()] FROM dbo.Orders AS O WHERE O.CustomerID = C.CustomerID ORDER BY OrderID FOR XML PATH('')) AS Orders FROM dbo.Customers AS C;
sources:
- L'article "T-SQL 2005: One-to-many comma separated" d'Anatoly Lubarsky.
- L'article "SQL Multiple rows to Comma Separated Column" de Wes Johnson.
Aucun commentaire:
Enregistrer un commentaire